+
+#import "GAIEcommerceProduct.h"
+#import "GAIEcommerceProductAction.h"
+#import "GAIEcommercePromotion.h"
+
+/*!
+ * Helper class to build a dictionary of hit parameters and values.
+ *
+ * Examples:
+ *
+ * id t = // get a tracker.
+ * [t send:[[[GAIDictionaryBuilder createEventWithCategory:@"EventCategory"
+ * action:@"EventAction"
+ * label:nil
+ * value:nil]
+ * set:@"dimension1" forKey:[GAIFields customDimensionForIndex:1]] build]];
+ *
+ * This will send an event hit type with the specified parameters
+ * and a custom dimension parameter.
+ *
+ * If you want to send a parameter with all hits, set it on GAITracker directly.
+ *
+ * [t set:kGAIScreenName value:@"Home"];
+ * [t send:[[GAIDictionaryBuilder createSocialWithNetwork:@"Google+"
+ * action:@"PlusOne"
+ * target:@"SOME_URL"] build]];
+ * [t send:[[GAIDictionaryBuilder createSocialWithNetwork:@"Google+"
+ * action:@"Share"
+ * target:@"SOME_POST"] build]];
+ * [t send:[[GAIDictionaryBuilder createSocialWithNetwork:@"Google+"
+ * action:@"HangOut"
+ * target:@"SOME_CIRCLE"]
+ * build]];
+ *
+ * You can override a value set on the tracker by adding it to the dictionary.
+ *
+ * [t set:kGAIScreenName value:@"Home"];
+ * [t send:...];
+ * [t send[[[GAIDictionaryBuilder createEventWithCategory:@"click"
+ * action:@"popup"
+ * label:nil
+ * value:nil]
+ * set:@"popup title" forKey:kGAIScreenName] build]];
+ *
+ * The values set via [GAIDictionaryBuilder set] or
+ * [GAIDictionaryBuilder setAll] will override any existing values in the
+ * GAIDictionaryBuilder object (i.e. initialized by
+ * [GAIDictionaryBuilder createXYZ]). e.g.
+ *
+ * GAIDictionaryBuilder *m =
+ * GAIDictionaryBuilder createTimingWithCategory:@"category"
+ * interval:@0
+ * name:@"name"
+ * label:nil];
+ * [t send:[m.set:@"10" forKey:kGAITimingVar] build];
+ * [t send:[m.set:@"20" forKey:kGAITimingVar] build];
+ *
+ */
+@interface GAIDictionaryBuilder : NSObject
+
+- (GAIDictionaryBuilder *)set:(NSString *)value
+ forKey:(NSString *)key;
+
+/*!
+ * Copies all the name-value pairs from params into this object, ignoring any
+ * keys that are not NSString and any values that are neither NSString or
+ * NSNull.
+ */
+- (GAIDictionaryBuilder *)setAll:(NSDictionary *)params;
+
+/*!
+ * Returns the value for the input parameter paramName, or nil if paramName
+ * is not present.
+ */
+- (NSString *)get:(NSString *)paramName;
+
+/*!
+ * Return an NSMutableDictionary object with all the parameters set in this
+ */
+- (NSMutableDictionary *)build;
+
+/*!
+ * Parses and translates utm campaign parameters to analytics campaign param
+ * and returns them as a map.
+ *
+ * @param urlString url containing utm campaign parameters.
+ *
+ * Valid campaign parameters are:
+ *
+ * - utm_id
+ * - utm_campaign
+ * - utm_content
+ * - utm_medium
+ * - utm_source
+ * - utm_term
+ * - dclid
+ * - gclid
+ * - gmob_t
+ * - aclid
+ * - anid
+ *
+ *
+ * Example:
+ * http://my.site.com/index.html?utm_campaign=wow&utm_source=source
+ * utm_campaign=wow&utm_source=source.
+ *
+ * For more information on manual and auto-tagging, see
+ * https://support.google.com/analytics/answer/1733663?hl=en
+ */
+- (GAIDictionaryBuilder *)setCampaignParametersFromUrl:(NSString *)urlString;
+
+/*!
+ Returns a GAIDictionaryBuilder object with parameters specific to an appview
+ hit.
+
+ Note that using this method will not set the screen name for followon hits. To
+ do that you need to call set:kGAIDescription value: on the
+ GAITracker instance.
+
+ This method is deprecated. Use createScreenView instead.
+ */
++ (GAIDictionaryBuilder *)createAppView DEPRECATED_MSG_ATTRIBUTE("Use createScreenView instead.");
+
+/*!
+ Returns a GAIDictionaryBuilder object with parameters specific to a screenview
+ hit.
+
+ Note that using this method will not set the screen name for followon hits. To
+ do that you need to call set:kGAIDescription value: on the
+ GAITracker instance.
+ */
++ (GAIDictionaryBuilder *)createScreenView;
+
+/*!
+ Returns a GAIDictionaryBuilder object with parameters specific to an event hit.
+ */
++ (GAIDictionaryBuilder *)createEventWithCategory:(NSString *)category
+ action:(NSString *)action
+ label:(NSString *)label
+ value:(NSNumber *)value;
+
+/*!
+ Returns a GAIDictionaryBuilder object with parameters specific to an exception
+ hit.
+ */
++ (GAIDictionaryBuilder *)createExceptionWithDescription:(NSString *)description
+ withFatal:(NSNumber *)fatal;
+
+/*!
+ Returns a GAIDictionaryBuilder object with parameters specific to an item hit.
+ */
++ (GAIDictionaryBuilder *)createItemWithTransactionId:(NSString *)transactionId
+ name:(NSString *)name
+ sku:(NSString *)sku
+ category:(NSString *)category
+ price:(NSNumber *)price
+ quantity:(NSNumber *)quantity
+ currencyCode:(NSString *)currencyCode;
+
+/*!
+ Returns a GAIDictionaryBuilder object with parameters specific to a social hit.
+ */
++ (GAIDictionaryBuilder *)createSocialWithNetwork:(NSString *)network
+ action:(NSString *)action
+ target:(NSString *)target;
+
+/*!
+ Returns a GAIDictionaryBuilder object with parameters specific to a timing hit.
+ */
++ (GAIDictionaryBuilder *)createTimingWithCategory:(NSString *)category
+ interval:(NSNumber *)intervalMillis
+ name:(NSString *)name
+ label:(NSString *)label;
+
+/*!
+ Returns a GAIDictionaryBuilder object with parameters specific to a transaction
+ hit.
+ */
++ (GAIDictionaryBuilder *)createTransactionWithId:(NSString *)transactionId
+ affiliation:(NSString *)affiliation
+ revenue:(NSNumber *)revenue
+ tax:(NSNumber *)tax
+ shipping:(NSNumber *)shipping
+ currencyCode:(NSString *)currencyCode;
+
+/*!
+ Set the product action field for this hit.
+ */
+- (GAIDictionaryBuilder *)setProductAction:(GAIEcommerceProductAction *)productAction;
+
+/*!
+ Adds a product to this hit.
+ */
+- (GAIDictionaryBuilder *)addProduct:(GAIEcommerceProduct *)product;
+
+/*!
+ Add a product impression to this hit.
+ */
+- (GAIDictionaryBuilder *)addProductImpression:(GAIEcommerceProduct *)product
+ impressionList:(NSString *)name
+ impressionSource:(NSString *)source;
+
+/*!
+ Add a promotion to this hit.
+ */
+- (GAIDictionaryBuilder *)addPromotion:(GAIEcommercePromotion *)promotion;
+@end
diff --git a/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_armv7/GoogleAnalytics.framework/Headers/GAIEcommerceFields.h b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_armv7/GoogleAnalytics.framework/Headers/GAIEcommerceFields.h
new file mode 100644
index 0000000000..dc9797f037
--- /dev/null
+++ b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_armv7/GoogleAnalytics.framework/Headers/GAIEcommerceFields.h
@@ -0,0 +1,124 @@
+/*!
+ @header GAIEcommerceFields.h
+ @abstract Google Analytics iOS SDK Ecommerce Hit Format Header
+ @copyright Copyright 2014 Google Inc. All rights reserved.
+ */
+
+#import
+
+/*!
+ This class provides several fields and methods useful as wire format parameters for
+ Enhanced Ecommerce. See the online developer guides for Enhanced Ecommerce for details
+ on how to use the Enhanced Ecommerce features.
+ */
+
+// Enhanced Ecommerce Product fields
+extern NSString *const kGAIProductId;
+extern NSString *const kGAIProductName;
+extern NSString *const kGAIProductBrand;
+extern NSString *const kGAIProductCategory;
+extern NSString *const kGAIProductVariant;
+extern NSString *const kGAIProductPrice;
+extern NSString *const kGAIProductQuantity;
+extern NSString *const kGAIProductCouponCode;
+extern NSString *const kGAIProductPosition;
+
+extern NSString *const kGAIProductAction;
+
+// product action values
+extern NSString *const kGAIPADetail;
+extern NSString *const kGAIPAClick;
+extern NSString *const kGAIPAAdd;
+extern NSString *const kGAIPARemove;
+extern NSString *const kGAIPACheckout;
+extern NSString *const kGAIPACheckoutOption;
+extern NSString *const kGAIPAPurchase;
+extern NSString *const kGAIPARefund;
+
+// product action fields
+// used for 'purchase' and 'refund' actions
+extern NSString *const kGAIPATransactionId;
+extern NSString *const kGAIPAAffiliation;
+extern NSString *const kGAIPARevenue;
+extern NSString *const kGAIPATax;
+extern NSString *const kGAIPAShipping;
+extern NSString *const kGAIPACouponCode;
+// used for 'checkout' action
+extern NSString *const kGAICheckoutStep;
+extern NSString *const kGAICheckoutOption;
+// used for 'detail' and 'click' actions
+extern NSString *const kGAIProductActionList;
+extern NSString *const kGAIProductListSource;
+
+// Enhanced Ecommerce Impressions fields
+extern NSString *const kGAIImpressionName;
+extern NSString *const kGAIImpressionListSource;
+extern NSString *const kGAIImpressionProduct;
+extern NSString *const kGAIImpressionProductId;
+extern NSString *const kGAIImpressionProductName;
+extern NSString *const kGAIImpressionProductBrand;
+extern NSString *const kGAIImpressionProductCategory;
+extern NSString *const kGAIImpressionProductVariant;
+extern NSString *const kGAIImpressionProductPosition;
+extern NSString *const kGAIImpressionProductPrice;
+
+// Enhanced Ecommerce Promotions fields
+extern NSString *const kGAIPromotionId;
+extern NSString *const kGAIPromotionName;
+extern NSString *const kGAIPromotionCreative;
+extern NSString *const kGAIPromotionPosition;
+
+// Promotion actions
+extern NSString *const kGAIPromotionAction;
+extern NSString *const kGAIPromotionView;
+extern NSString *const kGAIPromotionClick;
+
+@interface GAIEcommerceFields : NSObject
+
+/*!
+ Generates an enhanced ecommerce product field. Note that field names generated by
+ customDimensionForIndex and customMetricForIndex can be used as suffixes.
+
+ @param index the index of the product
+ @param suffix the product field suffix (such as kGAIProductPrice).
+
+ @return an NSString representing the product field parameter
+ */
++ (NSString *)productFieldForIndex:(NSUInteger)index suffix:(NSString *)suffix;
+
+/*!
+ Genrates an enhanced ecommerce impression list field name with an index. The return value of
+ this method should also be used as input to the productImpressionForList method below.
+
+ @param index the index of the impression list
+
+ @return an NSString representing the impression list parameter
+ */
++ (NSString *)impressionListForIndex:(NSUInteger)index;
+
+/*!
+ Generates an enhanced ecommerce product impression field with the impression list, product index
+ and product suffix as parameters. The output of the method impressionListForIndex above should be
+ used as the input list for this method. The output of customDimensionForIndex and
+ customMetricForIndex can be used as suffixes.
+
+ @param list the impression list for this product impression
+ @param index the index of this product in the impression list
+ @param suffix the product impression suffix for this field
+
+ @return an NSString representing this product impression field parameter
+ */
++ (NSString *)productImpressionForList:(NSString *)list
+ index:(NSUInteger)index
+ suffix:(NSString *)suffix;
+
+/*!
+ Generates an enhanced ecommerce promotion field with an index and suffix.
+
+ @param index the index of the promotion
+ @param suffix the promotion suffix (such as kGAIPromotionId)
+
+ @return an NSString representing this promotion field paramter
+ */
++ (NSString *)promotionForIndex:(NSUInteger)index suffix:(NSString *)suffix;
+@end
diff --git a/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_armv7/GoogleAnalytics.framework/Headers/GAIEcommerceProduct.h b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_armv7/GoogleAnalytics.framework/Headers/GAIEcommerceProduct.h
new file mode 100644
index 0000000000..b0ba7aaf0c
--- /dev/null
+++ b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_armv7/GoogleAnalytics.framework/Headers/GAIEcommerceProduct.h
@@ -0,0 +1,102 @@
+/*!
+ @header GAIEcommerceProduct.h
+ @abstract Google Analytics iOS SDK Hit Format Header
+ @copyright Copyright 2014 Google Inc. All rights reserved.
+ */
+
+#import
+
+/*!
+ * Class to construct product related information for a Google Analytics beacon. Use this class to
+ * report information about products sold by merchants or impressions of products seen by users.
+ * Instances of this class can be associated with both Product Actions and Product
+ * Impression Lists.
+ *
+ * Typical usage:
+ *
+ * [tracker set:kGAIScreenName value:@"MyScreen"];
+ * GAIDictionaryBuilder *builder = [GAIDictionaryBuilder createScreenView];
+ * GAIEcommerceProduct *product = [[GAIEcommerceProduct alloc] init];
+ * [product setId:@""PID-1234""];
+ * [product setName:@"Space Monkeys!"];
+ * [product setPrice:@100];
+ * [product setQuantity:@2];
+ * [builder addProductImpression:product impressionList:@"listName"];
+ * [tracker send:[builder build]];
+ *
+ */
+@interface GAIEcommerceProduct : NSObject
+
+/*!
+ Sets the id that is used to identify a product in GA reports.
+ */
+- (GAIEcommerceProduct *)setId:(NSString *)productId;
+
+/*!
+ Sets the name that is used to identify the product in GA reports.
+ */
+- (GAIEcommerceProduct *)setName:(NSString *)productName;
+
+/*!
+ Sets the brand associated with the product in GA reports.
+ */
+- (GAIEcommerceProduct *)setBrand:(NSString *)productBrand;
+
+/*!
+ Sets the category associated with the product in GA reports.
+ */
+- (GAIEcommerceProduct *)setCategory:(NSString *)productCategory;
+
+/*!
+ Sets the variant of the product.
+ */
+- (GAIEcommerceProduct *)setVariant:(NSString *)productVariant;
+
+/*!
+ Sets the price of the product.
+ */
+- (GAIEcommerceProduct *)setPrice:(NSNumber *)productPrice;
+
+/*!
+ Sets the quantity of the product. This field is usually not used with product impressions.
+ */
+- (GAIEcommerceProduct *)setQuantity:(NSNumber *)productQuantity;
+
+/*!
+ Sets the coupon code associated with the product. This field is usually not used with product
+ impressions.
+ */
+- (GAIEcommerceProduct *)setCouponCode:(NSString *)productCouponCode;
+
+/*!
+ Sets the position of the product on the screen/product impression list, etc.
+ */
+- (GAIEcommerceProduct *)setPosition:(NSNumber *)productPosition;
+
+/*!
+ Sets the custom dimension associated with this product.
+ */
+- (GAIEcommerceProduct *)setCustomDimension:(NSUInteger)index value:(NSString *)value;
+
+/*!
+ Sets the custom metric associated with this product.
+ */
+- (GAIEcommerceProduct *)setCustomMetric:(NSUInteger)index value:(NSNumber *)value;
+
+/*!
+ Builds an NSDictionary of fields stored in this instance suitable for a product action. The
+ index parameter is the index of this product in the product action list.
+
+ Normally, users will have no need to call this method.
+ */
+- (NSDictionary *)buildWithIndex:(NSUInteger)index;
+
+/*!
+ Builds an NSDictionary of fields stored in this instance suitable for an impression list. The
+ lIndex parameter is the index of the product impression list while the index parameter is the
+ index of this product in that impression list.
+
+ Normally, users will have no need to call this method.
+ */
+- (NSDictionary *)buildWithListIndex:(NSUInteger)lIndex index:(NSUInteger)index;
+@end
diff --git a/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_armv7/GoogleAnalytics.framework/Headers/GAIEcommerceProductAction.h b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_armv7/GoogleAnalytics.framework/Headers/GAIEcommerceProductAction.h
new file mode 100644
index 0000000000..e3da1c1502
--- /dev/null
+++ b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_armv7/GoogleAnalytics.framework/Headers/GAIEcommerceProductAction.h
@@ -0,0 +1,107 @@
+/*!
+ @header GAIProductAction.h
+ @abstract Google Analytics iOS SDK Hit Format Header
+ @copyright Copyright 2014 Google Inc. All rights reserved.
+ */
+
+#import
+
+/*!
+ * Class to construct transaction/checkout or other product interaction related information for a
+ * Google Analytics hit. Use this class to report information about products sold, viewed or
+ * refunded. This class is intended to be used with GAIDictionaryBuilder.
+ *
+ * Typical usage:
+ *
+ * [tracker set:kGAIScreenName value:@"MyScreen"];
+ * GAIDictionaryBuilder *builder = [GAIDictionaryBuilder createScreenView];
+ * GAIEcommerceProductAction *action = [[GAIEcommerceProductAction alloc] init];
+ * [action setAction:kGAIPAPurchase];
+ * [action setTransactionId:@"TT-1234"];
+ * [action setRevenue:@3.14];
+ * [action setCouponCode:@"EXTRA100"];
+ * [builder setProductAction:action];
+ * GAIEcommerceProduct *product = [[GAIEcommerceProduct alloc] init];
+ * [product setId:@""PID-1234""];
+ * [product setName:@"Space Monkeys!"];
+ * [product setPrice:@100];
+ * [product setQuantity:@2];
+ * [builder addProduct:product];
+ * [tracker send:[builder build]];
+ *
+ */
+@interface GAIEcommerceProductAction : NSObject
+
+/*!
+ Sets the product action field for this product action. Valid values can be found in
+ GAIEcommerceFields.h under "product action values".
+ */
+- (GAIEcommerceProductAction *)setAction:(NSString *)productAction;
+
+/*!
+ The unique id associated with the transaction. This value is used for kGAIPAPurchase and
+ kGAIPARefund product actions.
+ */
+- (GAIEcommerceProductAction *)setTransactionId:(NSString *)transactionId;
+
+/*!
+ Sets the transaction's affiliation value. This value is used for kGAIPAPurchase and
+ kGAIPARefund product actions.
+ */
+- (GAIEcommerceProductAction *)setAffiliation:(NSString *)affiliation;
+
+/*!
+ Sets the transaction's total revenue. This value is used for kGAIPAPurchase and kGAIPARefund
+ product actions.
+ */
+- (GAIEcommerceProductAction *)setRevenue:(NSNumber *)revenue;
+
+/*!
+ Sets the transaction's total tax. This value is used for kGAIPAPurchase and kGAIPARefund
+ product actions.
+ */
+- (GAIEcommerceProductAction *)setTax:(NSNumber *)tax;
+
+/*!
+ Sets the transaction's total shipping costs. This value is used for kGAIPAPurchase and
+ kGAIPARefund product actions.
+ */
+- (GAIEcommerceProductAction *)setShipping:(NSNumber *)shipping;
+
+/*!
+ Sets the coupon code used in this transaction. This value is used for kGAIPAPurchase and
+ kGAIPARefund product actions.
+ */
+- (GAIEcommerceProductAction *)setCouponCode:(NSString *)couponCode;
+
+/*!
+ Sets the checkout process's progress. This value is used for kGAICheckout and
+ kGAICheckoutOptions product actions.
+ */
+- (GAIEcommerceProductAction *)setCheckoutStep:(NSNumber *)checkoutStep;
+
+/*!
+ Sets the option associated with the checkout. This value is used for kGAICheckout and
+ kGAICheckoutOptions product actions.
+ */
+- (GAIEcommerceProductAction *)setCheckoutOption:(NSString *)checkoutOption;
+
+/*!
+ Sets the list name associated with the products in Google Analytics beacons. This value is
+ used in kGAIPADetail and kGAIPAClick product actions.
+ */
+- (GAIEcommerceProductAction *)setProductActionList:(NSString *)productActionList;
+
+/*!
+ Sets the list source name associated with the products in Google Analytics beacons. This value
+ is used in kGAIPADetail and kGAIPAClick product actions.
+ */
+- (GAIEcommerceProductAction *)setProductListSource:(NSString *)productListSource;
+
+/*!
+ Builds an NSDictionary of fields stored in this instance representing this product action.
+
+ Normally, users will have no need to call this method.
+ */
+- (NSDictionary *)build;
+@end
diff --git a/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_armv7/GoogleAnalytics.framework/Headers/GAIEcommercePromotion.h b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_armv7/GoogleAnalytics.framework/Headers/GAIEcommercePromotion.h
new file mode 100644
index 0000000000..c7bf25af02
--- /dev/null
+++ b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_armv7/GoogleAnalytics.framework/Headers/GAIEcommercePromotion.h
@@ -0,0 +1,54 @@
+/*!
+ @header GAIEcommercePromotion.h
+ @abstract Google Analytics iOS SDK Hit Format Header
+ @copyright Copyright 2014 Google Inc. All rights reserved.
+ */
+
+#import
+
+/*!
+ * Class to construct promotion related fields for Google Analytics hits. The fields from this class
+ * can be used to represent internal promotions that run within an app, such as banners, banner ads
+ * etc.
+ *
+ * Typical usage:
+ *
+ * GAIDictionaryBuilder *builder = [GAIDictionaryBuilder createScreenView];
+ * GAIEcommercePromotion *promotion = [[GAIEcommercePromotion alloc] init];
+ * [promotion setId:@"PROMO-ID1234"];
+ * [promotion setName:@"Home screen banner"];
+ * [builder set:kGAIPromotionClick forKey:kGAIPromotionAction];
+ * [builder addPromotion:promotion];
+ * [tracker send:builder.build]];
+ *
+ */
+@interface GAIEcommercePromotion : NSObject
+
+/*!
+ Sets the id that is used to identify a promotion in GA reports.
+ */
+- (GAIEcommercePromotion *)setId:(NSString *)pid;
+
+/*!
+ Sets the name that is used to identify a promotion in GA reports.
+ */
+- (GAIEcommercePromotion *)setName:(NSString *)name;
+
+/*!
+ Sets the name of the creative associated with the promotion.
+ */
+- (GAIEcommercePromotion *)setCreative:(NSString *)creative;
+
+/*!
+ Sets the position of the promotion.
+ */
+- (GAIEcommercePromotion *)setPosition:(NSString *)position;
+
+/*!
+ Builds an NSDictionary of fields stored in this instance. The index parameter is the
+ index of this promotion in that promotion list.
+
+ Normally, users will have no need to call this method.
+ */
+- (NSDictionary *)buildWithIndex:(NSUInteger)index;
+@end
diff --git a/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_armv7/GoogleAnalytics.framework/Headers/GAIFields.h b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_armv7/GoogleAnalytics.framework/Headers/GAIFields.h
new file mode 100644
index 0000000000..762f31faaf
--- /dev/null
+++ b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_armv7/GoogleAnalytics.framework/Headers/GAIFields.h
@@ -0,0 +1,134 @@
+/*!
+ @header GAIFields.h
+ @abstract Google Analytics iOS SDK Hit Format Header
+ @copyright Copyright 2013 Google Inc. All rights reserved.
+ */
+
+#import
+
+/*!
+ These fields can be used for the wire format parameter names required by
+ the |GAITracker| get, set and send methods as well as the set methods in the
+ |GAIDictionaryBuilder| class.
+ */
+extern NSString *const kGAIUseSecure;
+
+extern NSString *const kGAIHitType;
+extern NSString *const kGAITrackingId;
+extern NSString *const kGAIClientId;
+extern NSString *const kGAIDataSource;
+extern NSString *const kGAIAnonymizeIp;
+extern NSString *const kGAISessionControl;
+extern NSString *const kGAIDeviceModelVersion;
+extern NSString *const kGAIScreenResolution;
+extern NSString *const kGAIViewportSize;
+extern NSString *const kGAIEncoding;
+extern NSString *const kGAIScreenColors;
+extern NSString *const kGAILanguage;
+extern NSString *const kGAIJavaEnabled;
+extern NSString *const kGAIFlashVersion;
+extern NSString *const kGAINonInteraction;
+extern NSString *const kGAIReferrer;
+extern NSString *const kGAILocation;
+extern NSString *const kGAIHostname;
+extern NSString *const kGAIPage;
+extern NSString *const kGAIDescription; // synonym for kGAIScreenName
+extern NSString *const kGAIScreenName; // synonym for kGAIDescription
+extern NSString *const kGAITitle;
+extern NSString *const kGAIAdMobHitId;
+extern NSString *const kGAIAppName;
+extern NSString *const kGAIAppVersion;
+extern NSString *const kGAIAppId;
+extern NSString *const kGAIAppInstallerId;
+extern NSString *const kGAIUserId;
+
+extern NSString *const kGAIEventCategory;
+extern NSString *const kGAIEventAction;
+extern NSString *const kGAIEventLabel;
+extern NSString *const kGAIEventValue;
+
+extern NSString *const kGAISocialNetwork;
+extern NSString *const kGAISocialAction;
+extern NSString *const kGAISocialTarget;
+
+extern NSString *const kGAITransactionId;
+extern NSString *const kGAITransactionAffiliation;
+extern NSString *const kGAITransactionRevenue;
+extern NSString *const kGAITransactionShipping;
+extern NSString *const kGAITransactionTax;
+extern NSString *const kGAICurrencyCode;
+
+extern NSString *const kGAIItemPrice;
+extern NSString *const kGAIItemQuantity;
+extern NSString *const kGAIItemSku;
+extern NSString *const kGAIItemName;
+extern NSString *const kGAIItemCategory;
+
+extern NSString *const kGAICampaignSource;
+extern NSString *const kGAICampaignMedium;
+extern NSString *const kGAICampaignName;
+extern NSString *const kGAICampaignKeyword;
+extern NSString *const kGAICampaignContent;
+extern NSString *const kGAICampaignId;
+extern NSString *const kGAICampaignAdNetworkClickId;
+extern NSString *const kGAICampaignAdNetworkId;
+
+extern NSString *const kGAITimingCategory;
+extern NSString *const kGAITimingVar;
+extern NSString *const kGAITimingValue;
+extern NSString *const kGAITimingLabel;
+
+extern NSString *const kGAIExDescription;
+extern NSString *const kGAIExFatal;
+
+extern NSString *const kGAISampleRate;
+
+extern NSString *const kGAIIdfa;
+extern NSString *const kGAIAdTargetingEnabled;
+extern NSString *const kGAINpa;
+
+// hit types
+extern NSString *const kGAIAppView DEPRECATED_MSG_ATTRIBUTE("Use kGAIScreenView instead.");
+extern NSString *const kGAIScreenView;
+extern NSString *const kGAIEvent;
+extern NSString *const kGAISocial;
+extern NSString *const kGAITransaction;
+extern NSString *const kGAIItem;
+extern NSString *const kGAIException;
+extern NSString *const kGAITiming;
+
+/*!
+ This class provides several fields and methods useful as wire format parameter
+ names. The methods are used for wire format parameter names that are indexed.
+ */
+
+@interface GAIFields : NSObject
+
+/*!
+ Generates the correct parameter name for a content group with an index.
+
+ @param index the index of the content group.
+
+ @return an NSString representing the content group parameter for the index.
+ */
++ (NSString *)contentGroupForIndex:(NSUInteger)index;
+
+/*!
+ Generates the correct parameter name for a custon dimension with an index.
+
+ @param index the index of the custom dimension.
+
+ @return an NSString representing the custom dimension parameter for the index.
+ */
++ (NSString *)customDimensionForIndex:(NSUInteger)index;
+
+/*!
+ Generates the correct parameter name for a custom metric with an index.
+
+ @param index the index of the custom metric.
+
+ @return an NSString representing the custom metric parameter for the index.
+ */
++ (NSString *)customMetricForIndex:(NSUInteger)index;
+
+@end
diff --git a/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_armv7/GoogleAnalytics.framework/Headers/GAILogger.h b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_armv7/GoogleAnalytics.framework/Headers/GAILogger.h
new file mode 100644
index 0000000000..06291f2c1b
--- /dev/null
+++ b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_armv7/GoogleAnalytics.framework/Headers/GAILogger.h
@@ -0,0 +1,49 @@
+/*!
+ @header GAILogger.h
+ @abstract Google Analytics iOS SDK Source
+ @copyright Copyright 2011 Google Inc. All rights reserved.
+ */
+
+#import
+
+typedef NS_ENUM(NSUInteger, GAILogLevel) {
+ kGAILogLevelNone = 0,
+ kGAILogLevelError = 1,
+ kGAILogLevelWarning = 2,
+ kGAILogLevelInfo = 3,
+ kGAILogLevelVerbose = 4
+};
+
+/*!
+ Protocol to be used for logging debug and informational messages from the SDK.
+ Implementations of this protocol can be provided to the |GAI| class,
+ to be used as the logger by the SDK. See the |logger| property in GAI.h.
+ */
+@protocol GAILogger
+@required
+
+/*!
+ Only messages of |logLevel| and below are logged.
+ */
+@property (nonatomic, assign) GAILogLevel logLevel;
+
+/*!
+ Logs message with log level |kGAILogLevelVerbose|.
+ */
+- (void)verbose:(NSString *)message;
+
+/*!
+ Logs message with log level |kGAILogLevelInfo|.
+ */
+- (void)info:(NSString *)message;
+
+/*!
+ Logs message with log level |kGAILogLevelWarning|.
+ */
+- (void)warning:(NSString *)message;
+
+/*!
+ Logs message with log level |kGAILogLevelError|.
+ */
+- (void)error:(NSString *)message;
+@end
diff --git a/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_armv7/GoogleAnalytics.framework/Headers/GAITrackedViewController.h b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_armv7/GoogleAnalytics.framework/Headers/GAITrackedViewController.h
new file mode 100644
index 0000000000..de19def00a
--- /dev/null
+++ b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_armv7/GoogleAnalytics.framework/Headers/GAITrackedViewController.h
@@ -0,0 +1,33 @@
+/*!
+ @header GAITrackedViewController.h
+ @abstract Google Analytics for iOS Tracked View Controller Header
+ @copyright Copyright 2012 Google Inc. All rights reserved.
+ */
+
+#import
+#import
+
+@protocol GAITracker;
+
+/*!
+ Extends UIViewController to generate Google Analytics screenview calls
+ whenever the view appears; this is done by overriding the `viewDidAppear:`
+ method. The screen name must be set for any tracking calls to be made.
+
+ By default, this will use [GAI defaultTracker] for tracking calls, but one can
+ override this by setting the tracker property.
+ */
+@interface GAITrackedViewController : UIViewController
+
+/*!
+ The tracker on which view tracking calls are be made, or `nil`, in which case
+ [GAI defaultTracker] will be used.
+ */
+@property(nonatomic, assign) id tracker;
+/*!
+ The screen name, for purposes of Google Analytics tracking. If this is `nil`,
+ no tracking calls will be made.
+ */
+@property(nonatomic, copy) NSString *screenName;
+
+@end
diff --git a/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_armv7/GoogleAnalytics.framework/Headers/GAITracker.h b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_armv7/GoogleAnalytics.framework/Headers/GAITracker.h
new file mode 100644
index 0000000000..ca26e5df05
--- /dev/null
+++ b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_armv7/GoogleAnalytics.framework/Headers/GAITracker.h
@@ -0,0 +1,62 @@
+/*!
+ @header GAITracker.h
+ @abstract Google Analytics iOS SDK Tracker Header
+ @copyright Copyright 2013 Google Inc. All rights reserved.
+*/
+
+#import
+
+/*!
+ Google Analytics tracking interface. Obtain instances of this interface from
+ [GAI trackerWithTrackingId:] to track screens, events, transactions, timing,
+ and exceptions. The implementation of this interface is thread-safe, and no
+ calls are expected to block or take a long time. All network and disk activity
+ will take place in the background.
+ */
+@protocol GAITracker
+
+/*!
+ Name of this tracker.
+ */
+@property(nonatomic, readonly) NSString *name;
+
+/*!
+ Allow collection of IDFA and related fields if set to true. Default is false.
+ */
+@property(nonatomic) BOOL allowIDFACollection;
+
+/*!
+ Allow fields to be included in personalization features. Default is true.
+ */
+@property(nonatomic) BOOL allowAdPersonalizationSignals;
+
+/*!
+ Set a tracking parameter.
+
+ @param parameterName The parameter name.
+
+ @param value The value to set for the parameter. If this is nil, the
+ value for the parameter will be cleared.
+ */
+- (void)set:(NSString *)parameterName
+ value:(NSString *)value;
+
+/*!
+ Get a tracking parameter.
+
+ @param parameterName The parameter name.
+
+ @returns The parameter value, or nil if no value for the given parameter is
+ set.
+ */
+- (NSString *)get:(NSString *)parameterName;
+
+/*!
+ Queue tracking information with the given parameter values.
+
+ @param parameters A map from parameter names to parameter values which will be
+ set just for this piece of tracking information, or nil for none.
+ */
+- (void)send:(NSDictionary *)parameters;
+
+@end
diff --git a/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_armv7/GoogleAnalytics.framework/Headers/GoogleAnalytics-umbrella.h b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_armv7/GoogleAnalytics.framework/Headers/GoogleAnalytics-umbrella.h
new file mode 100644
index 0000000000..ecdf71e2b3
--- /dev/null
+++ b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_armv7/GoogleAnalytics.framework/Headers/GoogleAnalytics-umbrella.h
@@ -0,0 +1,26 @@
+#ifdef __OBJC__
+#import
+#else
+#ifndef FOUNDATION_EXPORT
+#if defined(__cplusplus)
+#define FOUNDATION_EXPORT extern "C"
+#else
+#define FOUNDATION_EXPORT extern
+#endif
+#endif
+#endif
+
+#import "GAI.h"
+#import "GAIDictionaryBuilder.h"
+#import "GAIEcommerceFields.h"
+#import "GAIEcommerceProduct.h"
+#import "GAIEcommerceProductAction.h"
+#import "GAIEcommercePromotion.h"
+#import "GAIFields.h"
+#import "GAILogger.h"
+#import "GAITrackedViewController.h"
+#import "GAITracker.h"
+
+FOUNDATION_EXPORT double GoogleAnalyticsVersionNumber;
+FOUNDATION_EXPORT const unsigned char GoogleAnalyticsVersionString[];
+
diff --git a/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_armv7/GoogleAnalytics.framework/Info.plist b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_armv7/GoogleAnalytics.framework/Info.plist
new file mode 100644
index 0000000000..489d587a75
--- /dev/null
+++ b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_armv7/GoogleAnalytics.framework/Info.plist
@@ -0,0 +1,20 @@
+
+
+
+
+ CFBundleExecutable
+ GoogleAnalytics
+ CFBundleIdentifier
+ com.firebase.Firebase-GoogleAnalytics
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ GoogleAnalytics
+ CFBundlePackageType
+ FMWK
+ CFBundleVersion
+ 3.21.0
+ DTSDKName
+ iphonesimulator11.2
+
+
diff --git a/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_armv7/GoogleAnalytics.framework/Modules/module.modulemap b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_armv7/GoogleAnalytics.framework/Modules/module.modulemap
new file mode 100644
index 0000000000..0ad464ac01
--- /dev/null
+++ b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_armv7/GoogleAnalytics.framework/Modules/module.modulemap
@@ -0,0 +1,7 @@
+framework module GoogleAnalytics {
+umbrella header "GoogleAnalytics-umbrella.h"
+export *
+module * { export * }
+ link "sqlite3"
+ link "z"
+}
diff --git a/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAnalytics.framework/GoogleAnalytics b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAnalytics.framework/GoogleAnalytics
new file mode 100644
index 0000000000..569664e159
Binary files /dev/null and b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAnalytics.framework/GoogleAnalytics differ
diff --git a/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAnalytics.framework/Headers/GAI.h b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAnalytics.framework/Headers/GAI.h
new file mode 100644
index 0000000000..c4b1d0f5fb
--- /dev/null
+++ b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAnalytics.framework/Headers/GAI.h
@@ -0,0 +1,192 @@
+/*!
+ @header GAI.h
+ @abstract Google Analytics iOS SDK Header
+ @version 3.21
+ @copyright Copyright 2015 Google Inc. All rights reserved.
+ */
+
+#import
+
+#import "GAILogger.h"
+#import "GAITrackedViewController.h"
+#import "GAITracker.h"
+
+typedef NS_ENUM(NSUInteger, GAIDispatchResult) {
+ kGAIDispatchNoData,
+ kGAIDispatchGood,
+ kGAIDispatchError
+};
+
+/*! Google Analytics product string. */
+extern NSString *const kGAIProduct;
+
+/*! Google Analytics version string. */
+extern NSString *const kGAIVersion;
+
+/*!
+ NSError objects returned by the Google Analytics SDK may have this error domain
+ to indicate that the error originated in the Google Analytics SDK.
+ */
+extern NSString *const kGAIErrorDomain;
+
+/*! Google Analytics error codes. */
+typedef enum {
+ // This error code indicates that there was no error. Never used.
+ kGAINoError = 0,
+
+ // This error code indicates that there was a database-related error.
+ kGAIDatabaseError,
+
+ // This error code indicates that there was a network-related error.
+ kGAINetworkError,
+} GAIErrorCode;
+
+/*!
+ Google Analytics iOS top-level class. Provides facilities to create trackers
+ and set behaviorial flags.
+ */
+@interface GAI : NSObject
+
+/*!
+ For convenience, this class exposes a default tracker instance.
+ This is initialized to `nil` and will be set to the first tracker that is
+ instantiated in trackerWithTrackingId:. It may be overridden as desired.
+
+ The GAITrackedViewController class will, by default, use this tracker instance.
+ */
+@property(nonatomic, assign) id defaultTracker;
+
+/*!
+ The GAILogger to use.
+ */
+@property(nonatomic, retain) id logger;
+
+/*!
+ When this is true, no tracking information will be gathered; tracking calls
+ will effectively become no-ops. When set to true, all tracking information that
+ has not yet been submitted. The value of this flag will be persisted
+ automatically by the SDK. Developers can optionally use this flag to implement
+ an opt-out setting in the app to allows users to opt out of Google Analytics
+ tracking.
+
+ This is set to `NO` the first time the Google Analytics SDK is used on a
+ device, and is persisted thereafter.
+ */
+@property(nonatomic, assign) BOOL optOut;
+
+/*!
+ If this value is positive, tracking information will be automatically
+ dispatched every dispatchInterval seconds. Otherwise, tracking information must
+ be sent manually by calling dispatch.
+
+ By default, this is set to `120`, which indicates tracking information should
+ be dispatched automatically every 120 seconds.
+ */
+@property(nonatomic, assign) NSTimeInterval dispatchInterval;
+
+/*!
+ When set to true, the SDK will record the currently registered uncaught
+ exception handler, and then register an uncaught exception handler which tracks
+ the exceptions that occurred using defaultTracker. If defaultTracker is not
+ `nil`, this function will track the exception on the tracker and attempt to
+ dispatch any outstanding tracking information for 5 seconds. It will then call
+ the previously registered exception handler, if any. When set back to false,
+ the previously registered uncaught exception handler will be restored.
+ */
+@property(nonatomic, assign) BOOL trackUncaughtExceptions;
+
+/*!
+ When this is 'YES', no tracking information will be sent. Defaults to 'NO'.
+ */
+@property(nonatomic, assign) BOOL dryRun;
+
+/*! Get the shared instance of the Google Analytics for iOS class. */
++ (GAI *)sharedInstance;
+
+/*!
+ Creates or retrieves a GAITracker implementation with the specified name and
+ tracking ID. If the tracker for the specified name does not already exist, then
+ it will be created and returned; otherwise, the existing tracker will be
+ returned. If the existing tracker for the respective name has a different
+ tracking ID, that tracking ID is not changed by this method. If defaultTracker
+ is not set, it will be set to the tracker instance returned here.
+
+ @param name The name of this tracker. Must not be `nil` or empty.
+
+ @param trackingId The tracking ID to use for this tracker. It should be of
+ the form `UA-xxxxx-y`.
+
+ @return A GAITracker associated with the specified name. The tracker
+ can be used to send tracking data to Google Analytics. The first time this
+ method is called with a particular name, the tracker for that name will be
+ returned, and subsequent calls with the same name will return the same
+ instance. It is not necessary to retain the tracker because the tracker will be
+ retained internally by the library.
+
+ If an error occurs or the name is not valid, this method will return
+ `nil`.
+ */
+- (id)trackerWithName:(NSString *)name
+ trackingId:(NSString *)trackingId;
+
+/*!
+ Creates or retrieves a GAITracker implementation with name equal to
+ the specified tracking ID. If the tracker for the respective name does not
+ already exist, it is created, has it's tracking ID set to |trackingId|,
+ and is returned; otherwise, the existing tracker is returned. If the existing
+ tracker for the respective name has a different tracking ID, that tracking ID
+ is not changed by this method. If defaultTracker is not set, it is set to the
+ tracker instance returned here.
+
+ @param trackingId The tracking ID to use for this tracker. It should be of
+ the form `UA-xxxxx-y`. The name of the tracker will be the same as trackingId.
+
+ @return A GAITracker associated with the specified trackingId. The tracker
+ can be used to send tracking data to Google Analytics. The first time this
+ method is called with a particular trackingId, the tracker for the respective
+ name will be returned, and subsequent calls with the same trackingId
+ will return the same instance. It is not necessary to retain the tracker
+ because the tracker will be retained internally by the library.
+
+ If an error occurs or the trackingId is not valid, this method will return
+ `nil`.
+ */
+- (id)trackerWithTrackingId:(NSString *)trackingId;
+
+/*!
+ Remove a tracker from the trackers dictionary. If it is the default tracker,
+ clears the default tracker as well.
+
+ @param name The name of the tracker.
+ */
+- (void)removeTrackerByName:(NSString *)name;
+
+/*!
+ Dispatches any pending tracking information.
+
+ Note that this does not have any effect on dispatchInterval, and can be used in
+ conjunction with periodic dispatch. */
+- (void)dispatch;
+
+/*!
+ Dispatches the next tracking beacon in the queue, calling completionHandler when
+ the tracking beacon has either been sent (returning kGAIDispatchGood) or an error has resulted
+ (returning kGAIDispatchError). If there is no network connection or there is no data to send,
+ kGAIDispatchNoData is returned.
+
+ Note that calling this method with a non-nil completionHandler disables periodic dispatch.
+ Periodic dispatch can be reenabled by setting the dispatchInterval to a positive number when
+ the app resumes from the background.
+
+ Calling this method with a nil completionHandler is the same as calling the dispatch
+ above.
+
+ This method can be used for background data fetching in iOS 7.0 or later. It would be wise to
+ call this when the application is exiting to initiate the submission of any unsubmitted
+ tracking information.
+
+ @param completionHandler The block to run after a single dispatch request. The GAIDispatchResult
+ param indicates whether the dispatch succeeded, had an error, or had no hits to dispatch.
+ */
+- (void)dispatchWithCompletionHandler:(void (^)(GAIDispatchResult result))completionHandler;
+@end
diff --git a/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAnalytics.framework/Headers/GAIDictionaryBuilder.h b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAnalytics.framework/Headers/GAIDictionaryBuilder.h
new file mode 100644
index 0000000000..aa96cba11b
--- /dev/null
+++ b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAnalytics.framework/Headers/GAIDictionaryBuilder.h
@@ -0,0 +1,214 @@
+/*!
+ @header GAIDictionaryBuilder.h
+ @abstract Google Analytics iOS SDK Hit Format Header
+ @copyright Copyright 2013 Google Inc. All rights reserved.
+ */
+
+#import
+
+#import "GAIEcommerceProduct.h"
+#import "GAIEcommerceProductAction.h"
+#import "GAIEcommercePromotion.h"
+
+/*!
+ * Helper class to build a dictionary of hit parameters and values.
+ *
+ * Examples:
+ *
+ * id t = // get a tracker.
+ * [t send:[[[GAIDictionaryBuilder createEventWithCategory:@"EventCategory"
+ * action:@"EventAction"
+ * label:nil
+ * value:nil]
+ * set:@"dimension1" forKey:[GAIFields customDimensionForIndex:1]] build]];
+ *
+ * This will send an event hit type with the specified parameters
+ * and a custom dimension parameter.
+ *
+ * If you want to send a parameter with all hits, set it on GAITracker directly.
+ *
+ * [t set:kGAIScreenName value:@"Home"];
+ * [t send:[[GAIDictionaryBuilder createSocialWithNetwork:@"Google+"
+ * action:@"PlusOne"
+ * target:@"SOME_URL"] build]];
+ * [t send:[[GAIDictionaryBuilder createSocialWithNetwork:@"Google+"
+ * action:@"Share"
+ * target:@"SOME_POST"] build]];
+ * [t send:[[GAIDictionaryBuilder createSocialWithNetwork:@"Google+"
+ * action:@"HangOut"
+ * target:@"SOME_CIRCLE"]
+ * build]];
+ *
+ * You can override a value set on the tracker by adding it to the dictionary.
+ *
+ * [t set:kGAIScreenName value:@"Home"];
+ * [t send:...];
+ * [t send[[[GAIDictionaryBuilder createEventWithCategory:@"click"
+ * action:@"popup"
+ * label:nil
+ * value:nil]
+ * set:@"popup title" forKey:kGAIScreenName] build]];
+ *
+ * The values set via [GAIDictionaryBuilder set] or
+ * [GAIDictionaryBuilder setAll] will override any existing values in the
+ * GAIDictionaryBuilder object (i.e. initialized by
+ * [GAIDictionaryBuilder createXYZ]). e.g.
+ *
+ * GAIDictionaryBuilder *m =
+ * GAIDictionaryBuilder createTimingWithCategory:@"category"
+ * interval:@0
+ * name:@"name"
+ * label:nil];
+ * [t send:[m.set:@"10" forKey:kGAITimingVar] build];
+ * [t send:[m.set:@"20" forKey:kGAITimingVar] build];
+ *
+ */
+@interface GAIDictionaryBuilder : NSObject
+
+- (GAIDictionaryBuilder *)set:(NSString *)value
+ forKey:(NSString *)key;
+
+/*!
+ * Copies all the name-value pairs from params into this object, ignoring any
+ * keys that are not NSString and any values that are neither NSString or
+ * NSNull.
+ */
+- (GAIDictionaryBuilder *)setAll:(NSDictionary *)params;
+
+/*!
+ * Returns the value for the input parameter paramName, or nil if paramName
+ * is not present.
+ */
+- (NSString *)get:(NSString *)paramName;
+
+/*!
+ * Return an NSMutableDictionary object with all the parameters set in this
+ */
+- (NSMutableDictionary *)build;
+
+/*!
+ * Parses and translates utm campaign parameters to analytics campaign param
+ * and returns them as a map.
+ *
+ * @param urlString url containing utm campaign parameters.
+ *
+ * Valid campaign parameters are:
+ *
+ * - utm_id
+ * - utm_campaign
+ * - utm_content
+ * - utm_medium
+ * - utm_source
+ * - utm_term
+ * - dclid
+ * - gclid
+ * - gmob_t
+ * - aclid
+ * - anid
+ *
+ *
+ * Example:
+ * http://my.site.com/index.html?utm_campaign=wow&utm_source=source
+ * utm_campaign=wow&utm_source=source.
+ *
+ * For more information on manual and auto-tagging, see
+ * https://support.google.com/analytics/answer/1733663?hl=en
+ */
+- (GAIDictionaryBuilder *)setCampaignParametersFromUrl:(NSString *)urlString;
+
+/*!
+ Returns a GAIDictionaryBuilder object with parameters specific to an appview
+ hit.
+
+ Note that using this method will not set the screen name for followon hits. To
+ do that you need to call set:kGAIDescription value: on the
+ GAITracker instance.
+
+ This method is deprecated. Use createScreenView instead.
+ */
++ (GAIDictionaryBuilder *)createAppView DEPRECATED_MSG_ATTRIBUTE("Use createScreenView instead.");
+
+/*!
+ Returns a GAIDictionaryBuilder object with parameters specific to a screenview
+ hit.
+
+ Note that using this method will not set the screen name for followon hits. To
+ do that you need to call set:kGAIDescription value: on the
+ GAITracker instance.
+ */
++ (GAIDictionaryBuilder *)createScreenView;
+
+/*!
+ Returns a GAIDictionaryBuilder object with parameters specific to an event hit.
+ */
++ (GAIDictionaryBuilder *)createEventWithCategory:(NSString *)category
+ action:(NSString *)action
+ label:(NSString *)label
+ value:(NSNumber *)value;
+
+/*!
+ Returns a GAIDictionaryBuilder object with parameters specific to an exception
+ hit.
+ */
++ (GAIDictionaryBuilder *)createExceptionWithDescription:(NSString *)description
+ withFatal:(NSNumber *)fatal;
+
+/*!
+ Returns a GAIDictionaryBuilder object with parameters specific to an item hit.
+ */
++ (GAIDictionaryBuilder *)createItemWithTransactionId:(NSString *)transactionId
+ name:(NSString *)name
+ sku:(NSString *)sku
+ category:(NSString *)category
+ price:(NSNumber *)price
+ quantity:(NSNumber *)quantity
+ currencyCode:(NSString *)currencyCode;
+
+/*!
+ Returns a GAIDictionaryBuilder object with parameters specific to a social hit.
+ */
++ (GAIDictionaryBuilder *)createSocialWithNetwork:(NSString *)network
+ action:(NSString *)action
+ target:(NSString *)target;
+
+/*!
+ Returns a GAIDictionaryBuilder object with parameters specific to a timing hit.
+ */
++ (GAIDictionaryBuilder *)createTimingWithCategory:(NSString *)category
+ interval:(NSNumber *)intervalMillis
+ name:(NSString *)name
+ label:(NSString *)label;
+
+/*!
+ Returns a GAIDictionaryBuilder object with parameters specific to a transaction
+ hit.
+ */
++ (GAIDictionaryBuilder *)createTransactionWithId:(NSString *)transactionId
+ affiliation:(NSString *)affiliation
+ revenue:(NSNumber *)revenue
+ tax:(NSNumber *)tax
+ shipping:(NSNumber *)shipping
+ currencyCode:(NSString *)currencyCode;
+
+/*!
+ Set the product action field for this hit.
+ */
+- (GAIDictionaryBuilder *)setProductAction:(GAIEcommerceProductAction *)productAction;
+
+/*!
+ Adds a product to this hit.
+ */
+- (GAIDictionaryBuilder *)addProduct:(GAIEcommerceProduct *)product;
+
+/*!
+ Add a product impression to this hit.
+ */
+- (GAIDictionaryBuilder *)addProductImpression:(GAIEcommerceProduct *)product
+ impressionList:(NSString *)name
+ impressionSource:(NSString *)source;
+
+/*!
+ Add a promotion to this hit.
+ */
+- (GAIDictionaryBuilder *)addPromotion:(GAIEcommercePromotion *)promotion;
+@end
diff --git a/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAnalytics.framework/Headers/GAIEcommerceFields.h b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAnalytics.framework/Headers/GAIEcommerceFields.h
new file mode 100644
index 0000000000..dc9797f037
--- /dev/null
+++ b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAnalytics.framework/Headers/GAIEcommerceFields.h
@@ -0,0 +1,124 @@
+/*!
+ @header GAIEcommerceFields.h
+ @abstract Google Analytics iOS SDK Ecommerce Hit Format Header
+ @copyright Copyright 2014 Google Inc. All rights reserved.
+ */
+
+#import
+
+/*!
+ This class provides several fields and methods useful as wire format parameters for
+ Enhanced Ecommerce. See the online developer guides for Enhanced Ecommerce for details
+ on how to use the Enhanced Ecommerce features.
+ */
+
+// Enhanced Ecommerce Product fields
+extern NSString *const kGAIProductId;
+extern NSString *const kGAIProductName;
+extern NSString *const kGAIProductBrand;
+extern NSString *const kGAIProductCategory;
+extern NSString *const kGAIProductVariant;
+extern NSString *const kGAIProductPrice;
+extern NSString *const kGAIProductQuantity;
+extern NSString *const kGAIProductCouponCode;
+extern NSString *const kGAIProductPosition;
+
+extern NSString *const kGAIProductAction;
+
+// product action values
+extern NSString *const kGAIPADetail;
+extern NSString *const kGAIPAClick;
+extern NSString *const kGAIPAAdd;
+extern NSString *const kGAIPARemove;
+extern NSString *const kGAIPACheckout;
+extern NSString *const kGAIPACheckoutOption;
+extern NSString *const kGAIPAPurchase;
+extern NSString *const kGAIPARefund;
+
+// product action fields
+// used for 'purchase' and 'refund' actions
+extern NSString *const kGAIPATransactionId;
+extern NSString *const kGAIPAAffiliation;
+extern NSString *const kGAIPARevenue;
+extern NSString *const kGAIPATax;
+extern NSString *const kGAIPAShipping;
+extern NSString *const kGAIPACouponCode;
+// used for 'checkout' action
+extern NSString *const kGAICheckoutStep;
+extern NSString *const kGAICheckoutOption;
+// used for 'detail' and 'click' actions
+extern NSString *const kGAIProductActionList;
+extern NSString *const kGAIProductListSource;
+
+// Enhanced Ecommerce Impressions fields
+extern NSString *const kGAIImpressionName;
+extern NSString *const kGAIImpressionListSource;
+extern NSString *const kGAIImpressionProduct;
+extern NSString *const kGAIImpressionProductId;
+extern NSString *const kGAIImpressionProductName;
+extern NSString *const kGAIImpressionProductBrand;
+extern NSString *const kGAIImpressionProductCategory;
+extern NSString *const kGAIImpressionProductVariant;
+extern NSString *const kGAIImpressionProductPosition;
+extern NSString *const kGAIImpressionProductPrice;
+
+// Enhanced Ecommerce Promotions fields
+extern NSString *const kGAIPromotionId;
+extern NSString *const kGAIPromotionName;
+extern NSString *const kGAIPromotionCreative;
+extern NSString *const kGAIPromotionPosition;
+
+// Promotion actions
+extern NSString *const kGAIPromotionAction;
+extern NSString *const kGAIPromotionView;
+extern NSString *const kGAIPromotionClick;
+
+@interface GAIEcommerceFields : NSObject
+
+/*!
+ Generates an enhanced ecommerce product field. Note that field names generated by
+ customDimensionForIndex and customMetricForIndex can be used as suffixes.
+
+ @param index the index of the product
+ @param suffix the product field suffix (such as kGAIProductPrice).
+
+ @return an NSString representing the product field parameter
+ */
++ (NSString *)productFieldForIndex:(NSUInteger)index suffix:(NSString *)suffix;
+
+/*!
+ Genrates an enhanced ecommerce impression list field name with an index. The return value of
+ this method should also be used as input to the productImpressionForList method below.
+
+ @param index the index of the impression list
+
+ @return an NSString representing the impression list parameter
+ */
++ (NSString *)impressionListForIndex:(NSUInteger)index;
+
+/*!
+ Generates an enhanced ecommerce product impression field with the impression list, product index
+ and product suffix as parameters. The output of the method impressionListForIndex above should be
+ used as the input list for this method. The output of customDimensionForIndex and
+ customMetricForIndex can be used as suffixes.
+
+ @param list the impression list for this product impression
+ @param index the index of this product in the impression list
+ @param suffix the product impression suffix for this field
+
+ @return an NSString representing this product impression field parameter
+ */
++ (NSString *)productImpressionForList:(NSString *)list
+ index:(NSUInteger)index
+ suffix:(NSString *)suffix;
+
+/*!
+ Generates an enhanced ecommerce promotion field with an index and suffix.
+
+ @param index the index of the promotion
+ @param suffix the promotion suffix (such as kGAIPromotionId)
+
+ @return an NSString representing this promotion field paramter
+ */
++ (NSString *)promotionForIndex:(NSUInteger)index suffix:(NSString *)suffix;
+@end
diff --git a/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAnalytics.framework/Headers/GAIEcommerceProduct.h b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAnalytics.framework/Headers/GAIEcommerceProduct.h
new file mode 100644
index 0000000000..b0ba7aaf0c
--- /dev/null
+++ b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAnalytics.framework/Headers/GAIEcommerceProduct.h
@@ -0,0 +1,102 @@
+/*!
+ @header GAIEcommerceProduct.h
+ @abstract Google Analytics iOS SDK Hit Format Header
+ @copyright Copyright 2014 Google Inc. All rights reserved.
+ */
+
+#import
+
+/*!
+ * Class to construct product related information for a Google Analytics beacon. Use this class to
+ * report information about products sold by merchants or impressions of products seen by users.
+ * Instances of this class can be associated with both Product Actions and Product
+ * Impression Lists.
+ *
+ * Typical usage:
+ *
+ * [tracker set:kGAIScreenName value:@"MyScreen"];
+ * GAIDictionaryBuilder *builder = [GAIDictionaryBuilder createScreenView];
+ * GAIEcommerceProduct *product = [[GAIEcommerceProduct alloc] init];
+ * [product setId:@""PID-1234""];
+ * [product setName:@"Space Monkeys!"];
+ * [product setPrice:@100];
+ * [product setQuantity:@2];
+ * [builder addProductImpression:product impressionList:@"listName"];
+ * [tracker send:[builder build]];
+ *
+ */
+@interface GAIEcommerceProduct : NSObject
+
+/*!
+ Sets the id that is used to identify a product in GA reports.
+ */
+- (GAIEcommerceProduct *)setId:(NSString *)productId;
+
+/*!
+ Sets the name that is used to identify the product in GA reports.
+ */
+- (GAIEcommerceProduct *)setName:(NSString *)productName;
+
+/*!
+ Sets the brand associated with the product in GA reports.
+ */
+- (GAIEcommerceProduct *)setBrand:(NSString *)productBrand;
+
+/*!
+ Sets the category associated with the product in GA reports.
+ */
+- (GAIEcommerceProduct *)setCategory:(NSString *)productCategory;
+
+/*!
+ Sets the variant of the product.
+ */
+- (GAIEcommerceProduct *)setVariant:(NSString *)productVariant;
+
+/*!
+ Sets the price of the product.
+ */
+- (GAIEcommerceProduct *)setPrice:(NSNumber *)productPrice;
+
+/*!
+ Sets the quantity of the product. This field is usually not used with product impressions.
+ */
+- (GAIEcommerceProduct *)setQuantity:(NSNumber *)productQuantity;
+
+/*!
+ Sets the coupon code associated with the product. This field is usually not used with product
+ impressions.
+ */
+- (GAIEcommerceProduct *)setCouponCode:(NSString *)productCouponCode;
+
+/*!
+ Sets the position of the product on the screen/product impression list, etc.
+ */
+- (GAIEcommerceProduct *)setPosition:(NSNumber *)productPosition;
+
+/*!
+ Sets the custom dimension associated with this product.
+ */
+- (GAIEcommerceProduct *)setCustomDimension:(NSUInteger)index value:(NSString *)value;
+
+/*!
+ Sets the custom metric associated with this product.
+ */
+- (GAIEcommerceProduct *)setCustomMetric:(NSUInteger)index value:(NSNumber *)value;
+
+/*!
+ Builds an NSDictionary of fields stored in this instance suitable for a product action. The
+ index parameter is the index of this product in the product action list.
+
+ Normally, users will have no need to call this method.
+ */
+- (NSDictionary *)buildWithIndex:(NSUInteger)index;
+
+/*!
+ Builds an NSDictionary of fields stored in this instance suitable for an impression list. The
+ lIndex parameter is the index of the product impression list while the index parameter is the
+ index of this product in that impression list.
+
+ Normally, users will have no need to call this method.
+ */
+- (NSDictionary *)buildWithListIndex:(NSUInteger)lIndex index:(NSUInteger)index;
+@end
diff --git a/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAnalytics.framework/Headers/GAIEcommerceProductAction.h b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAnalytics.framework/Headers/GAIEcommerceProductAction.h
new file mode 100644
index 0000000000..e3da1c1502
--- /dev/null
+++ b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAnalytics.framework/Headers/GAIEcommerceProductAction.h
@@ -0,0 +1,107 @@
+/*!
+ @header GAIProductAction.h
+ @abstract Google Analytics iOS SDK Hit Format Header
+ @copyright Copyright 2014 Google Inc. All rights reserved.
+ */
+
+#import
+
+/*!
+ * Class to construct transaction/checkout or other product interaction related information for a
+ * Google Analytics hit. Use this class to report information about products sold, viewed or
+ * refunded. This class is intended to be used with GAIDictionaryBuilder.
+ *
+ * Typical usage:
+ *
+ * [tracker set:kGAIScreenName value:@"MyScreen"];
+ * GAIDictionaryBuilder *builder = [GAIDictionaryBuilder createScreenView];
+ * GAIEcommerceProductAction *action = [[GAIEcommerceProductAction alloc] init];
+ * [action setAction:kGAIPAPurchase];
+ * [action setTransactionId:@"TT-1234"];
+ * [action setRevenue:@3.14];
+ * [action setCouponCode:@"EXTRA100"];
+ * [builder setProductAction:action];
+ * GAIEcommerceProduct *product = [[GAIEcommerceProduct alloc] init];
+ * [product setId:@""PID-1234""];
+ * [product setName:@"Space Monkeys!"];
+ * [product setPrice:@100];
+ * [product setQuantity:@2];
+ * [builder addProduct:product];
+ * [tracker send:[builder build]];
+ *
+ */
+@interface GAIEcommerceProductAction : NSObject
+
+/*!
+ Sets the product action field for this product action. Valid values can be found in
+ GAIEcommerceFields.h under "product action values".
+ */
+- (GAIEcommerceProductAction *)setAction:(NSString *)productAction;
+
+/*!
+ The unique id associated with the transaction. This value is used for kGAIPAPurchase and
+ kGAIPARefund product actions.
+ */
+- (GAIEcommerceProductAction *)setTransactionId:(NSString *)transactionId;
+
+/*!
+ Sets the transaction's affiliation value. This value is used for kGAIPAPurchase and
+ kGAIPARefund product actions.
+ */
+- (GAIEcommerceProductAction *)setAffiliation:(NSString *)affiliation;
+
+/*!
+ Sets the transaction's total revenue. This value is used for kGAIPAPurchase and kGAIPARefund
+ product actions.
+ */
+- (GAIEcommerceProductAction *)setRevenue:(NSNumber *)revenue;
+
+/*!
+ Sets the transaction's total tax. This value is used for kGAIPAPurchase and kGAIPARefund
+ product actions.
+ */
+- (GAIEcommerceProductAction *)setTax:(NSNumber *)tax;
+
+/*!
+ Sets the transaction's total shipping costs. This value is used for kGAIPAPurchase and
+ kGAIPARefund product actions.
+ */
+- (GAIEcommerceProductAction *)setShipping:(NSNumber *)shipping;
+
+/*!
+ Sets the coupon code used in this transaction. This value is used for kGAIPAPurchase and
+ kGAIPARefund product actions.
+ */
+- (GAIEcommerceProductAction *)setCouponCode:(NSString *)couponCode;
+
+/*!
+ Sets the checkout process's progress. This value is used for kGAICheckout and
+ kGAICheckoutOptions product actions.
+ */
+- (GAIEcommerceProductAction *)setCheckoutStep:(NSNumber *)checkoutStep;
+
+/*!
+ Sets the option associated with the checkout. This value is used for kGAICheckout and
+ kGAICheckoutOptions product actions.
+ */
+- (GAIEcommerceProductAction *)setCheckoutOption:(NSString *)checkoutOption;
+
+/*!
+ Sets the list name associated with the products in Google Analytics beacons. This value is
+ used in kGAIPADetail and kGAIPAClick product actions.
+ */
+- (GAIEcommerceProductAction *)setProductActionList:(NSString *)productActionList;
+
+/*!
+ Sets the list source name associated with the products in Google Analytics beacons. This value
+ is used in kGAIPADetail and kGAIPAClick product actions.
+ */
+- (GAIEcommerceProductAction *)setProductListSource:(NSString *)productListSource;
+
+/*!
+ Builds an NSDictionary of fields stored in this instance representing this product action.
+
+ Normally, users will have no need to call this method.
+ */
+- (NSDictionary *)build;
+@end
diff --git a/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAnalytics.framework/Headers/GAIEcommercePromotion.h b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAnalytics.framework/Headers/GAIEcommercePromotion.h
new file mode 100644
index 0000000000..c7bf25af02
--- /dev/null
+++ b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAnalytics.framework/Headers/GAIEcommercePromotion.h
@@ -0,0 +1,54 @@
+/*!
+ @header GAIEcommercePromotion.h
+ @abstract Google Analytics iOS SDK Hit Format Header
+ @copyright Copyright 2014 Google Inc. All rights reserved.
+ */
+
+#import
+
+/*!
+ * Class to construct promotion related fields for Google Analytics hits. The fields from this class
+ * can be used to represent internal promotions that run within an app, such as banners, banner ads
+ * etc.
+ *
+ * Typical usage:
+ *
+ * GAIDictionaryBuilder *builder = [GAIDictionaryBuilder createScreenView];
+ * GAIEcommercePromotion *promotion = [[GAIEcommercePromotion alloc] init];
+ * [promotion setId:@"PROMO-ID1234"];
+ * [promotion setName:@"Home screen banner"];
+ * [builder set:kGAIPromotionClick forKey:kGAIPromotionAction];
+ * [builder addPromotion:promotion];
+ * [tracker send:builder.build]];
+ *
+ */
+@interface GAIEcommercePromotion : NSObject
+
+/*!
+ Sets the id that is used to identify a promotion in GA reports.
+ */
+- (GAIEcommercePromotion *)setId:(NSString *)pid;
+
+/*!
+ Sets the name that is used to identify a promotion in GA reports.
+ */
+- (GAIEcommercePromotion *)setName:(NSString *)name;
+
+/*!
+ Sets the name of the creative associated with the promotion.
+ */
+- (GAIEcommercePromotion *)setCreative:(NSString *)creative;
+
+/*!
+ Sets the position of the promotion.
+ */
+- (GAIEcommercePromotion *)setPosition:(NSString *)position;
+
+/*!
+ Builds an NSDictionary of fields stored in this instance. The index parameter is the
+ index of this promotion in that promotion list.
+
+ Normally, users will have no need to call this method.
+ */
+- (NSDictionary *)buildWithIndex:(NSUInteger)index;
+@end
diff --git a/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAnalytics.framework/Headers/GAIFields.h b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAnalytics.framework/Headers/GAIFields.h
new file mode 100644
index 0000000000..762f31faaf
--- /dev/null
+++ b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAnalytics.framework/Headers/GAIFields.h
@@ -0,0 +1,134 @@
+/*!
+ @header GAIFields.h
+ @abstract Google Analytics iOS SDK Hit Format Header
+ @copyright Copyright 2013 Google Inc. All rights reserved.
+ */
+
+#import
+
+/*!
+ These fields can be used for the wire format parameter names required by
+ the |GAITracker| get, set and send methods as well as the set methods in the
+ |GAIDictionaryBuilder| class.
+ */
+extern NSString *const kGAIUseSecure;
+
+extern NSString *const kGAIHitType;
+extern NSString *const kGAITrackingId;
+extern NSString *const kGAIClientId;
+extern NSString *const kGAIDataSource;
+extern NSString *const kGAIAnonymizeIp;
+extern NSString *const kGAISessionControl;
+extern NSString *const kGAIDeviceModelVersion;
+extern NSString *const kGAIScreenResolution;
+extern NSString *const kGAIViewportSize;
+extern NSString *const kGAIEncoding;
+extern NSString *const kGAIScreenColors;
+extern NSString *const kGAILanguage;
+extern NSString *const kGAIJavaEnabled;
+extern NSString *const kGAIFlashVersion;
+extern NSString *const kGAINonInteraction;
+extern NSString *const kGAIReferrer;
+extern NSString *const kGAILocation;
+extern NSString *const kGAIHostname;
+extern NSString *const kGAIPage;
+extern NSString *const kGAIDescription; // synonym for kGAIScreenName
+extern NSString *const kGAIScreenName; // synonym for kGAIDescription
+extern NSString *const kGAITitle;
+extern NSString *const kGAIAdMobHitId;
+extern NSString *const kGAIAppName;
+extern NSString *const kGAIAppVersion;
+extern NSString *const kGAIAppId;
+extern NSString *const kGAIAppInstallerId;
+extern NSString *const kGAIUserId;
+
+extern NSString *const kGAIEventCategory;
+extern NSString *const kGAIEventAction;
+extern NSString *const kGAIEventLabel;
+extern NSString *const kGAIEventValue;
+
+extern NSString *const kGAISocialNetwork;
+extern NSString *const kGAISocialAction;
+extern NSString *const kGAISocialTarget;
+
+extern NSString *const kGAITransactionId;
+extern NSString *const kGAITransactionAffiliation;
+extern NSString *const kGAITransactionRevenue;
+extern NSString *const kGAITransactionShipping;
+extern NSString *const kGAITransactionTax;
+extern NSString *const kGAICurrencyCode;
+
+extern NSString *const kGAIItemPrice;
+extern NSString *const kGAIItemQuantity;
+extern NSString *const kGAIItemSku;
+extern NSString *const kGAIItemName;
+extern NSString *const kGAIItemCategory;
+
+extern NSString *const kGAICampaignSource;
+extern NSString *const kGAICampaignMedium;
+extern NSString *const kGAICampaignName;
+extern NSString *const kGAICampaignKeyword;
+extern NSString *const kGAICampaignContent;
+extern NSString *const kGAICampaignId;
+extern NSString *const kGAICampaignAdNetworkClickId;
+extern NSString *const kGAICampaignAdNetworkId;
+
+extern NSString *const kGAITimingCategory;
+extern NSString *const kGAITimingVar;
+extern NSString *const kGAITimingValue;
+extern NSString *const kGAITimingLabel;
+
+extern NSString *const kGAIExDescription;
+extern NSString *const kGAIExFatal;
+
+extern NSString *const kGAISampleRate;
+
+extern NSString *const kGAIIdfa;
+extern NSString *const kGAIAdTargetingEnabled;
+extern NSString *const kGAINpa;
+
+// hit types
+extern NSString *const kGAIAppView DEPRECATED_MSG_ATTRIBUTE("Use kGAIScreenView instead.");
+extern NSString *const kGAIScreenView;
+extern NSString *const kGAIEvent;
+extern NSString *const kGAISocial;
+extern NSString *const kGAITransaction;
+extern NSString *const kGAIItem;
+extern NSString *const kGAIException;
+extern NSString *const kGAITiming;
+
+/*!
+ This class provides several fields and methods useful as wire format parameter
+ names. The methods are used for wire format parameter names that are indexed.
+ */
+
+@interface GAIFields : NSObject
+
+/*!
+ Generates the correct parameter name for a content group with an index.
+
+ @param index the index of the content group.
+
+ @return an NSString representing the content group parameter for the index.
+ */
++ (NSString *)contentGroupForIndex:(NSUInteger)index;
+
+/*!
+ Generates the correct parameter name for a custon dimension with an index.
+
+ @param index the index of the custom dimension.
+
+ @return an NSString representing the custom dimension parameter for the index.
+ */
++ (NSString *)customDimensionForIndex:(NSUInteger)index;
+
+/*!
+ Generates the correct parameter name for a custom metric with an index.
+
+ @param index the index of the custom metric.
+
+ @return an NSString representing the custom metric parameter for the index.
+ */
++ (NSString *)customMetricForIndex:(NSUInteger)index;
+
+@end
diff --git a/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAnalytics.framework/Headers/GAILogger.h b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAnalytics.framework/Headers/GAILogger.h
new file mode 100644
index 0000000000..06291f2c1b
--- /dev/null
+++ b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAnalytics.framework/Headers/GAILogger.h
@@ -0,0 +1,49 @@
+/*!
+ @header GAILogger.h
+ @abstract Google Analytics iOS SDK Source
+ @copyright Copyright 2011 Google Inc. All rights reserved.
+ */
+
+#import
+
+typedef NS_ENUM(NSUInteger, GAILogLevel) {
+ kGAILogLevelNone = 0,
+ kGAILogLevelError = 1,
+ kGAILogLevelWarning = 2,
+ kGAILogLevelInfo = 3,
+ kGAILogLevelVerbose = 4
+};
+
+/*!
+ Protocol to be used for logging debug and informational messages from the SDK.
+ Implementations of this protocol can be provided to the |GAI| class,
+ to be used as the logger by the SDK. See the |logger| property in GAI.h.
+ */
+@protocol GAILogger
+@required
+
+/*!
+ Only messages of |logLevel| and below are logged.
+ */
+@property (nonatomic, assign) GAILogLevel logLevel;
+
+/*!
+ Logs message with log level |kGAILogLevelVerbose|.
+ */
+- (void)verbose:(NSString *)message;
+
+/*!
+ Logs message with log level |kGAILogLevelInfo|.
+ */
+- (void)info:(NSString *)message;
+
+/*!
+ Logs message with log level |kGAILogLevelWarning|.
+ */
+- (void)warning:(NSString *)message;
+
+/*!
+ Logs message with log level |kGAILogLevelError|.
+ */
+- (void)error:(NSString *)message;
+@end
diff --git a/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAnalytics.framework/Headers/GAITrackedViewController.h b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAnalytics.framework/Headers/GAITrackedViewController.h
new file mode 100644
index 0000000000..de19def00a
--- /dev/null
+++ b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAnalytics.framework/Headers/GAITrackedViewController.h
@@ -0,0 +1,33 @@
+/*!
+ @header GAITrackedViewController.h
+ @abstract Google Analytics for iOS Tracked View Controller Header
+ @copyright Copyright 2012 Google Inc. All rights reserved.
+ */
+
+#import
+#import
+
+@protocol GAITracker;
+
+/*!
+ Extends UIViewController to generate Google Analytics screenview calls
+ whenever the view appears; this is done by overriding the `viewDidAppear:`
+ method. The screen name must be set for any tracking calls to be made.
+
+ By default, this will use [GAI defaultTracker] for tracking calls, but one can
+ override this by setting the tracker property.
+ */
+@interface GAITrackedViewController : UIViewController
+
+/*!
+ The tracker on which view tracking calls are be made, or `nil`, in which case
+ [GAI defaultTracker] will be used.
+ */
+@property(nonatomic, assign) id tracker;
+/*!
+ The screen name, for purposes of Google Analytics tracking. If this is `nil`,
+ no tracking calls will be made.
+ */
+@property(nonatomic, copy) NSString *screenName;
+
+@end
diff --git a/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAnalytics.framework/Headers/GAITracker.h b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAnalytics.framework/Headers/GAITracker.h
new file mode 100644
index 0000000000..ca26e5df05
--- /dev/null
+++ b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAnalytics.framework/Headers/GAITracker.h
@@ -0,0 +1,62 @@
+/*!
+ @header GAITracker.h
+ @abstract Google Analytics iOS SDK Tracker Header
+ @copyright Copyright 2013 Google Inc. All rights reserved.
+*/
+
+#import
+
+/*!
+ Google Analytics tracking interface. Obtain instances of this interface from
+ [GAI trackerWithTrackingId:] to track screens, events, transactions, timing,
+ and exceptions. The implementation of this interface is thread-safe, and no
+ calls are expected to block or take a long time. All network and disk activity
+ will take place in the background.
+ */
+@protocol GAITracker
+
+/*!
+ Name of this tracker.
+ */
+@property(nonatomic, readonly) NSString *name;
+
+/*!
+ Allow collection of IDFA and related fields if set to true. Default is false.
+ */
+@property(nonatomic) BOOL allowIDFACollection;
+
+/*!
+ Allow fields to be included in personalization features. Default is true.
+ */
+@property(nonatomic) BOOL allowAdPersonalizationSignals;
+
+/*!
+ Set a tracking parameter.
+
+ @param parameterName The parameter name.
+
+ @param value The value to set for the parameter. If this is nil, the
+ value for the parameter will be cleared.
+ */
+- (void)set:(NSString *)parameterName
+ value:(NSString *)value;
+
+/*!
+ Get a tracking parameter.
+
+ @param parameterName The parameter name.
+
+ @returns The parameter value, or nil if no value for the given parameter is
+ set.
+ */
+- (NSString *)get:(NSString *)parameterName;
+
+/*!
+ Queue tracking information with the given parameter values.
+
+ @param parameters A map from parameter names to parameter values which will be
+ set just for this piece of tracking information, or nil for none.
+ */
+- (void)send:(NSDictionary *)parameters;
+
+@end
diff --git a/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAnalytics.framework/Headers/GoogleAnalytics-umbrella.h b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAnalytics.framework/Headers/GoogleAnalytics-umbrella.h
new file mode 100644
index 0000000000..ecdf71e2b3
--- /dev/null
+++ b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAnalytics.framework/Headers/GoogleAnalytics-umbrella.h
@@ -0,0 +1,26 @@
+#ifdef __OBJC__
+#import
+#else
+#ifndef FOUNDATION_EXPORT
+#if defined(__cplusplus)
+#define FOUNDATION_EXPORT extern "C"
+#else
+#define FOUNDATION_EXPORT extern
+#endif
+#endif
+#endif
+
+#import "GAI.h"
+#import "GAIDictionaryBuilder.h"
+#import "GAIEcommerceFields.h"
+#import "GAIEcommerceProduct.h"
+#import "GAIEcommerceProductAction.h"
+#import "GAIEcommercePromotion.h"
+#import "GAIFields.h"
+#import "GAILogger.h"
+#import "GAITrackedViewController.h"
+#import "GAITracker.h"
+
+FOUNDATION_EXPORT double GoogleAnalyticsVersionNumber;
+FOUNDATION_EXPORT const unsigned char GoogleAnalyticsVersionString[];
+
diff --git a/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAnalytics.framework/Info.plist b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAnalytics.framework/Info.plist
new file mode 100644
index 0000000000..489d587a75
--- /dev/null
+++ b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAnalytics.framework/Info.plist
@@ -0,0 +1,20 @@
+
+
+
+
+ CFBundleExecutable
+ GoogleAnalytics
+ CFBundleIdentifier
+ com.firebase.Firebase-GoogleAnalytics
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ GoogleAnalytics
+ CFBundlePackageType
+ FMWK
+ CFBundleVersion
+ 3.21.0
+ DTSDKName
+ iphonesimulator11.2
+
+
diff --git a/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAnalytics.framework/Modules/module.modulemap b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAnalytics.framework/Modules/module.modulemap
new file mode 100644
index 0000000000..0ad464ac01
--- /dev/null
+++ b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_i386_x86_64-simulator/GoogleAnalytics.framework/Modules/module.modulemap
@@ -0,0 +1,7 @@
+framework module GoogleAnalytics {
+umbrella header "GoogleAnalytics-umbrella.h"
+export *
+module * { export * }
+ link "sqlite3"
+ link "z"
+}
diff --git a/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAnalytics.framework/GoogleAnalytics b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAnalytics.framework/GoogleAnalytics
new file mode 100644
index 0000000000..7da00f0a95
Binary files /dev/null and b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAnalytics.framework/GoogleAnalytics differ
diff --git a/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAnalytics.framework/Headers/GAI.h b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAnalytics.framework/Headers/GAI.h
new file mode 100644
index 0000000000..c4b1d0f5fb
--- /dev/null
+++ b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAnalytics.framework/Headers/GAI.h
@@ -0,0 +1,192 @@
+/*!
+ @header GAI.h
+ @abstract Google Analytics iOS SDK Header
+ @version 3.21
+ @copyright Copyright 2015 Google Inc. All rights reserved.
+ */
+
+#import
+
+#import "GAILogger.h"
+#import "GAITrackedViewController.h"
+#import "GAITracker.h"
+
+typedef NS_ENUM(NSUInteger, GAIDispatchResult) {
+ kGAIDispatchNoData,
+ kGAIDispatchGood,
+ kGAIDispatchError
+};
+
+/*! Google Analytics product string. */
+extern NSString *const kGAIProduct;
+
+/*! Google Analytics version string. */
+extern NSString *const kGAIVersion;
+
+/*!
+ NSError objects returned by the Google Analytics SDK may have this error domain
+ to indicate that the error originated in the Google Analytics SDK.
+ */
+extern NSString *const kGAIErrorDomain;
+
+/*! Google Analytics error codes. */
+typedef enum {
+ // This error code indicates that there was no error. Never used.
+ kGAINoError = 0,
+
+ // This error code indicates that there was a database-related error.
+ kGAIDatabaseError,
+
+ // This error code indicates that there was a network-related error.
+ kGAINetworkError,
+} GAIErrorCode;
+
+/*!
+ Google Analytics iOS top-level class. Provides facilities to create trackers
+ and set behaviorial flags.
+ */
+@interface GAI : NSObject
+
+/*!
+ For convenience, this class exposes a default tracker instance.
+ This is initialized to `nil` and will be set to the first tracker that is
+ instantiated in trackerWithTrackingId:. It may be overridden as desired.
+
+ The GAITrackedViewController class will, by default, use this tracker instance.
+ */
+@property(nonatomic, assign) id defaultTracker;
+
+/*!
+ The GAILogger to use.
+ */
+@property(nonatomic, retain) id logger;
+
+/*!
+ When this is true, no tracking information will be gathered; tracking calls
+ will effectively become no-ops. When set to true, all tracking information that
+ has not yet been submitted. The value of this flag will be persisted
+ automatically by the SDK. Developers can optionally use this flag to implement
+ an opt-out setting in the app to allows users to opt out of Google Analytics
+ tracking.
+
+ This is set to `NO` the first time the Google Analytics SDK is used on a
+ device, and is persisted thereafter.
+ */
+@property(nonatomic, assign) BOOL optOut;
+
+/*!
+ If this value is positive, tracking information will be automatically
+ dispatched every dispatchInterval seconds. Otherwise, tracking information must
+ be sent manually by calling dispatch.
+
+ By default, this is set to `120`, which indicates tracking information should
+ be dispatched automatically every 120 seconds.
+ */
+@property(nonatomic, assign) NSTimeInterval dispatchInterval;
+
+/*!
+ When set to true, the SDK will record the currently registered uncaught
+ exception handler, and then register an uncaught exception handler which tracks
+ the exceptions that occurred using defaultTracker. If defaultTracker is not
+ `nil`, this function will track the exception on the tracker and attempt to
+ dispatch any outstanding tracking information for 5 seconds. It will then call
+ the previously registered exception handler, if any. When set back to false,
+ the previously registered uncaught exception handler will be restored.
+ */
+@property(nonatomic, assign) BOOL trackUncaughtExceptions;
+
+/*!
+ When this is 'YES', no tracking information will be sent. Defaults to 'NO'.
+ */
+@property(nonatomic, assign) BOOL dryRun;
+
+/*! Get the shared instance of the Google Analytics for iOS class. */
++ (GAI *)sharedInstance;
+
+/*!
+ Creates or retrieves a GAITracker implementation with the specified name and
+ tracking ID. If the tracker for the specified name does not already exist, then
+ it will be created and returned; otherwise, the existing tracker will be
+ returned. If the existing tracker for the respective name has a different
+ tracking ID, that tracking ID is not changed by this method. If defaultTracker
+ is not set, it will be set to the tracker instance returned here.
+
+ @param name The name of this tracker. Must not be `nil` or empty.
+
+ @param trackingId The tracking ID to use for this tracker. It should be of
+ the form `UA-xxxxx-y`.
+
+ @return A GAITracker associated with the specified name. The tracker
+ can be used to send tracking data to Google Analytics. The first time this
+ method is called with a particular name, the tracker for that name will be
+ returned, and subsequent calls with the same name will return the same
+ instance. It is not necessary to retain the tracker because the tracker will be
+ retained internally by the library.
+
+ If an error occurs or the name is not valid, this method will return
+ `nil`.
+ */
+- (id)trackerWithName:(NSString *)name
+ trackingId:(NSString *)trackingId;
+
+/*!
+ Creates or retrieves a GAITracker implementation with name equal to
+ the specified tracking ID. If the tracker for the respective name does not
+ already exist, it is created, has it's tracking ID set to |trackingId|,
+ and is returned; otherwise, the existing tracker is returned. If the existing
+ tracker for the respective name has a different tracking ID, that tracking ID
+ is not changed by this method. If defaultTracker is not set, it is set to the
+ tracker instance returned here.
+
+ @param trackingId The tracking ID to use for this tracker. It should be of
+ the form `UA-xxxxx-y`. The name of the tracker will be the same as trackingId.
+
+ @return A GAITracker associated with the specified trackingId. The tracker
+ can be used to send tracking data to Google Analytics. The first time this
+ method is called with a particular trackingId, the tracker for the respective
+ name will be returned, and subsequent calls with the same trackingId
+ will return the same instance. It is not necessary to retain the tracker
+ because the tracker will be retained internally by the library.
+
+ If an error occurs or the trackingId is not valid, this method will return
+ `nil`.
+ */
+- (id)trackerWithTrackingId:(NSString *)trackingId;
+
+/*!
+ Remove a tracker from the trackers dictionary. If it is the default tracker,
+ clears the default tracker as well.
+
+ @param name The name of the tracker.
+ */
+- (void)removeTrackerByName:(NSString *)name;
+
+/*!
+ Dispatches any pending tracking information.
+
+ Note that this does not have any effect on dispatchInterval, and can be used in
+ conjunction with periodic dispatch. */
+- (void)dispatch;
+
+/*!
+ Dispatches the next tracking beacon in the queue, calling completionHandler when
+ the tracking beacon has either been sent (returning kGAIDispatchGood) or an error has resulted
+ (returning kGAIDispatchError). If there is no network connection or there is no data to send,
+ kGAIDispatchNoData is returned.
+
+ Note that calling this method with a non-nil completionHandler disables periodic dispatch.
+ Periodic dispatch can be reenabled by setting the dispatchInterval to a positive number when
+ the app resumes from the background.
+
+ Calling this method with a nil completionHandler is the same as calling the dispatch
+ above.
+
+ This method can be used for background data fetching in iOS 7.0 or later. It would be wise to
+ call this when the application is exiting to initiate the submission of any unsubmitted
+ tracking information.
+
+ @param completionHandler The block to run after a single dispatch request. The GAIDispatchResult
+ param indicates whether the dispatch succeeded, had an error, or had no hits to dispatch.
+ */
+- (void)dispatchWithCompletionHandler:(void (^)(GAIDispatchResult result))completionHandler;
+@end
diff --git a/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAnalytics.framework/Headers/GAIDictionaryBuilder.h b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAnalytics.framework/Headers/GAIDictionaryBuilder.h
new file mode 100644
index 0000000000..aa96cba11b
--- /dev/null
+++ b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAnalytics.framework/Headers/GAIDictionaryBuilder.h
@@ -0,0 +1,214 @@
+/*!
+ @header GAIDictionaryBuilder.h
+ @abstract Google Analytics iOS SDK Hit Format Header
+ @copyright Copyright 2013 Google Inc. All rights reserved.
+ */
+
+#import
+
+#import "GAIEcommerceProduct.h"
+#import "GAIEcommerceProductAction.h"
+#import "GAIEcommercePromotion.h"
+
+/*!
+ * Helper class to build a dictionary of hit parameters and values.
+ *
+ * Examples:
+ *
+ * id t = // get a tracker.
+ * [t send:[[[GAIDictionaryBuilder createEventWithCategory:@"EventCategory"
+ * action:@"EventAction"
+ * label:nil
+ * value:nil]
+ * set:@"dimension1" forKey:[GAIFields customDimensionForIndex:1]] build]];
+ *
+ * This will send an event hit type with the specified parameters
+ * and a custom dimension parameter.
+ *
+ * If you want to send a parameter with all hits, set it on GAITracker directly.
+ *
+ * [t set:kGAIScreenName value:@"Home"];
+ * [t send:[[GAIDictionaryBuilder createSocialWithNetwork:@"Google+"
+ * action:@"PlusOne"
+ * target:@"SOME_URL"] build]];
+ * [t send:[[GAIDictionaryBuilder createSocialWithNetwork:@"Google+"
+ * action:@"Share"
+ * target:@"SOME_POST"] build]];
+ * [t send:[[GAIDictionaryBuilder createSocialWithNetwork:@"Google+"
+ * action:@"HangOut"
+ * target:@"SOME_CIRCLE"]
+ * build]];
+ *
+ * You can override a value set on the tracker by adding it to the dictionary.
+ *
+ * [t set:kGAIScreenName value:@"Home"];
+ * [t send:...];
+ * [t send[[[GAIDictionaryBuilder createEventWithCategory:@"click"
+ * action:@"popup"
+ * label:nil
+ * value:nil]
+ * set:@"popup title" forKey:kGAIScreenName] build]];
+ *
+ * The values set via [GAIDictionaryBuilder set] or
+ * [GAIDictionaryBuilder setAll] will override any existing values in the
+ * GAIDictionaryBuilder object (i.e. initialized by
+ * [GAIDictionaryBuilder createXYZ]). e.g.
+ *
+ * GAIDictionaryBuilder *m =
+ * GAIDictionaryBuilder createTimingWithCategory:@"category"
+ * interval:@0
+ * name:@"name"
+ * label:nil];
+ * [t send:[m.set:@"10" forKey:kGAITimingVar] build];
+ * [t send:[m.set:@"20" forKey:kGAITimingVar] build];
+ *
+ */
+@interface GAIDictionaryBuilder : NSObject
+
+- (GAIDictionaryBuilder *)set:(NSString *)value
+ forKey:(NSString *)key;
+
+/*!
+ * Copies all the name-value pairs from params into this object, ignoring any
+ * keys that are not NSString and any values that are neither NSString or
+ * NSNull.
+ */
+- (GAIDictionaryBuilder *)setAll:(NSDictionary *)params;
+
+/*!
+ * Returns the value for the input parameter paramName, or nil if paramName
+ * is not present.
+ */
+- (NSString *)get:(NSString *)paramName;
+
+/*!
+ * Return an NSMutableDictionary object with all the parameters set in this
+ */
+- (NSMutableDictionary *)build;
+
+/*!
+ * Parses and translates utm campaign parameters to analytics campaign param
+ * and returns them as a map.
+ *
+ * @param urlString url containing utm campaign parameters.
+ *
+ * Valid campaign parameters are:
+ *
+ * - utm_id
+ * - utm_campaign
+ * - utm_content
+ * - utm_medium
+ * - utm_source
+ * - utm_term
+ * - dclid
+ * - gclid
+ * - gmob_t
+ * - aclid
+ * - anid
+ *
+ *
+ * Example:
+ * http://my.site.com/index.html?utm_campaign=wow&utm_source=source
+ * utm_campaign=wow&utm_source=source.
+ *
+ * For more information on manual and auto-tagging, see
+ * https://support.google.com/analytics/answer/1733663?hl=en
+ */
+- (GAIDictionaryBuilder *)setCampaignParametersFromUrl:(NSString *)urlString;
+
+/*!
+ Returns a GAIDictionaryBuilder object with parameters specific to an appview
+ hit.
+
+ Note that using this method will not set the screen name for followon hits. To
+ do that you need to call set:kGAIDescription value: on the
+ GAITracker instance.
+
+ This method is deprecated. Use createScreenView instead.
+ */
++ (GAIDictionaryBuilder *)createAppView DEPRECATED_MSG_ATTRIBUTE("Use createScreenView instead.");
+
+/*!
+ Returns a GAIDictionaryBuilder object with parameters specific to a screenview
+ hit.
+
+ Note that using this method will not set the screen name for followon hits. To
+ do that you need to call set:kGAIDescription value: on the
+ GAITracker instance.
+ */
++ (GAIDictionaryBuilder *)createScreenView;
+
+/*!
+ Returns a GAIDictionaryBuilder object with parameters specific to an event hit.
+ */
++ (GAIDictionaryBuilder *)createEventWithCategory:(NSString *)category
+ action:(NSString *)action
+ label:(NSString *)label
+ value:(NSNumber *)value;
+
+/*!
+ Returns a GAIDictionaryBuilder object with parameters specific to an exception
+ hit.
+ */
++ (GAIDictionaryBuilder *)createExceptionWithDescription:(NSString *)description
+ withFatal:(NSNumber *)fatal;
+
+/*!
+ Returns a GAIDictionaryBuilder object with parameters specific to an item hit.
+ */
++ (GAIDictionaryBuilder *)createItemWithTransactionId:(NSString *)transactionId
+ name:(NSString *)name
+ sku:(NSString *)sku
+ category:(NSString *)category
+ price:(NSNumber *)price
+ quantity:(NSNumber *)quantity
+ currencyCode:(NSString *)currencyCode;
+
+/*!
+ Returns a GAIDictionaryBuilder object with parameters specific to a social hit.
+ */
++ (GAIDictionaryBuilder *)createSocialWithNetwork:(NSString *)network
+ action:(NSString *)action
+ target:(NSString *)target;
+
+/*!
+ Returns a GAIDictionaryBuilder object with parameters specific to a timing hit.
+ */
++ (GAIDictionaryBuilder *)createTimingWithCategory:(NSString *)category
+ interval:(NSNumber *)intervalMillis
+ name:(NSString *)name
+ label:(NSString *)label;
+
+/*!
+ Returns a GAIDictionaryBuilder object with parameters specific to a transaction
+ hit.
+ */
++ (GAIDictionaryBuilder *)createTransactionWithId:(NSString *)transactionId
+ affiliation:(NSString *)affiliation
+ revenue:(NSNumber *)revenue
+ tax:(NSNumber *)tax
+ shipping:(NSNumber *)shipping
+ currencyCode:(NSString *)currencyCode;
+
+/*!
+ Set the product action field for this hit.
+ */
+- (GAIDictionaryBuilder *)setProductAction:(GAIEcommerceProductAction *)productAction;
+
+/*!
+ Adds a product to this hit.
+ */
+- (GAIDictionaryBuilder *)addProduct:(GAIEcommerceProduct *)product;
+
+/*!
+ Add a product impression to this hit.
+ */
+- (GAIDictionaryBuilder *)addProductImpression:(GAIEcommerceProduct *)product
+ impressionList:(NSString *)name
+ impressionSource:(NSString *)source;
+
+/*!
+ Add a promotion to this hit.
+ */
+- (GAIDictionaryBuilder *)addPromotion:(GAIEcommercePromotion *)promotion;
+@end
diff --git a/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAnalytics.framework/Headers/GAIEcommerceFields.h b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAnalytics.framework/Headers/GAIEcommerceFields.h
new file mode 100644
index 0000000000..dc9797f037
--- /dev/null
+++ b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAnalytics.framework/Headers/GAIEcommerceFields.h
@@ -0,0 +1,124 @@
+/*!
+ @header GAIEcommerceFields.h
+ @abstract Google Analytics iOS SDK Ecommerce Hit Format Header
+ @copyright Copyright 2014 Google Inc. All rights reserved.
+ */
+
+#import
+
+/*!
+ This class provides several fields and methods useful as wire format parameters for
+ Enhanced Ecommerce. See the online developer guides for Enhanced Ecommerce for details
+ on how to use the Enhanced Ecommerce features.
+ */
+
+// Enhanced Ecommerce Product fields
+extern NSString *const kGAIProductId;
+extern NSString *const kGAIProductName;
+extern NSString *const kGAIProductBrand;
+extern NSString *const kGAIProductCategory;
+extern NSString *const kGAIProductVariant;
+extern NSString *const kGAIProductPrice;
+extern NSString *const kGAIProductQuantity;
+extern NSString *const kGAIProductCouponCode;
+extern NSString *const kGAIProductPosition;
+
+extern NSString *const kGAIProductAction;
+
+// product action values
+extern NSString *const kGAIPADetail;
+extern NSString *const kGAIPAClick;
+extern NSString *const kGAIPAAdd;
+extern NSString *const kGAIPARemove;
+extern NSString *const kGAIPACheckout;
+extern NSString *const kGAIPACheckoutOption;
+extern NSString *const kGAIPAPurchase;
+extern NSString *const kGAIPARefund;
+
+// product action fields
+// used for 'purchase' and 'refund' actions
+extern NSString *const kGAIPATransactionId;
+extern NSString *const kGAIPAAffiliation;
+extern NSString *const kGAIPARevenue;
+extern NSString *const kGAIPATax;
+extern NSString *const kGAIPAShipping;
+extern NSString *const kGAIPACouponCode;
+// used for 'checkout' action
+extern NSString *const kGAICheckoutStep;
+extern NSString *const kGAICheckoutOption;
+// used for 'detail' and 'click' actions
+extern NSString *const kGAIProductActionList;
+extern NSString *const kGAIProductListSource;
+
+// Enhanced Ecommerce Impressions fields
+extern NSString *const kGAIImpressionName;
+extern NSString *const kGAIImpressionListSource;
+extern NSString *const kGAIImpressionProduct;
+extern NSString *const kGAIImpressionProductId;
+extern NSString *const kGAIImpressionProductName;
+extern NSString *const kGAIImpressionProductBrand;
+extern NSString *const kGAIImpressionProductCategory;
+extern NSString *const kGAIImpressionProductVariant;
+extern NSString *const kGAIImpressionProductPosition;
+extern NSString *const kGAIImpressionProductPrice;
+
+// Enhanced Ecommerce Promotions fields
+extern NSString *const kGAIPromotionId;
+extern NSString *const kGAIPromotionName;
+extern NSString *const kGAIPromotionCreative;
+extern NSString *const kGAIPromotionPosition;
+
+// Promotion actions
+extern NSString *const kGAIPromotionAction;
+extern NSString *const kGAIPromotionView;
+extern NSString *const kGAIPromotionClick;
+
+@interface GAIEcommerceFields : NSObject
+
+/*!
+ Generates an enhanced ecommerce product field. Note that field names generated by
+ customDimensionForIndex and customMetricForIndex can be used as suffixes.
+
+ @param index the index of the product
+ @param suffix the product field suffix (such as kGAIProductPrice).
+
+ @return an NSString representing the product field parameter
+ */
++ (NSString *)productFieldForIndex:(NSUInteger)index suffix:(NSString *)suffix;
+
+/*!
+ Genrates an enhanced ecommerce impression list field name with an index. The return value of
+ this method should also be used as input to the productImpressionForList method below.
+
+ @param index the index of the impression list
+
+ @return an NSString representing the impression list parameter
+ */
++ (NSString *)impressionListForIndex:(NSUInteger)index;
+
+/*!
+ Generates an enhanced ecommerce product impression field with the impression list, product index
+ and product suffix as parameters. The output of the method impressionListForIndex above should be
+ used as the input list for this method. The output of customDimensionForIndex and
+ customMetricForIndex can be used as suffixes.
+
+ @param list the impression list for this product impression
+ @param index the index of this product in the impression list
+ @param suffix the product impression suffix for this field
+
+ @return an NSString representing this product impression field parameter
+ */
++ (NSString *)productImpressionForList:(NSString *)list
+ index:(NSUInteger)index
+ suffix:(NSString *)suffix;
+
+/*!
+ Generates an enhanced ecommerce promotion field with an index and suffix.
+
+ @param index the index of the promotion
+ @param suffix the promotion suffix (such as kGAIPromotionId)
+
+ @return an NSString representing this promotion field paramter
+ */
++ (NSString *)promotionForIndex:(NSUInteger)index suffix:(NSString *)suffix;
+@end
diff --git a/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAnalytics.framework/Headers/GAIEcommerceProduct.h b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAnalytics.framework/Headers/GAIEcommerceProduct.h
new file mode 100644
index 0000000000..b0ba7aaf0c
--- /dev/null
+++ b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAnalytics.framework/Headers/GAIEcommerceProduct.h
@@ -0,0 +1,102 @@
+/*!
+ @header GAIEcommerceProduct.h
+ @abstract Google Analytics iOS SDK Hit Format Header
+ @copyright Copyright 2014 Google Inc. All rights reserved.
+ */
+
+#import
+
+/*!
+ * Class to construct product related information for a Google Analytics beacon. Use this class to
+ * report information about products sold by merchants or impressions of products seen by users.
+ * Instances of this class can be associated with both Product Actions and Product
+ * Impression Lists.
+ *
+ * Typical usage:
+ *
+ * [tracker set:kGAIScreenName value:@"MyScreen"];
+ * GAIDictionaryBuilder *builder = [GAIDictionaryBuilder createScreenView];
+ * GAIEcommerceProduct *product = [[GAIEcommerceProduct alloc] init];
+ * [product setId:@""PID-1234""];
+ * [product setName:@"Space Monkeys!"];
+ * [product setPrice:@100];
+ * [product setQuantity:@2];
+ * [builder addProductImpression:product impressionList:@"listName"];
+ * [tracker send:[builder build]];
+ *
+ */
+@interface GAIEcommerceProduct : NSObject
+
+/*!
+ Sets the id that is used to identify a product in GA reports.
+ */
+- (GAIEcommerceProduct *)setId:(NSString *)productId;
+
+/*!
+ Sets the name that is used to identify the product in GA reports.
+ */
+- (GAIEcommerceProduct *)setName:(NSString *)productName;
+
+/*!
+ Sets the brand associated with the product in GA reports.
+ */
+- (GAIEcommerceProduct *)setBrand:(NSString *)productBrand;
+
+/*!
+ Sets the category associated with the product in GA reports.
+ */
+- (GAIEcommerceProduct *)setCategory:(NSString *)productCategory;
+
+/*!
+ Sets the variant of the product.
+ */
+- (GAIEcommerceProduct *)setVariant:(NSString *)productVariant;
+
+/*!
+ Sets the price of the product.
+ */
+- (GAIEcommerceProduct *)setPrice:(NSNumber *)productPrice;
+
+/*!
+ Sets the quantity of the product. This field is usually not used with product impressions.
+ */
+- (GAIEcommerceProduct *)setQuantity:(NSNumber *)productQuantity;
+
+/*!
+ Sets the coupon code associated with the product. This field is usually not used with product
+ impressions.
+ */
+- (GAIEcommerceProduct *)setCouponCode:(NSString *)productCouponCode;
+
+/*!
+ Sets the position of the product on the screen/product impression list, etc.
+ */
+- (GAIEcommerceProduct *)setPosition:(NSNumber *)productPosition;
+
+/*!
+ Sets the custom dimension associated with this product.
+ */
+- (GAIEcommerceProduct *)setCustomDimension:(NSUInteger)index value:(NSString *)value;
+
+/*!
+ Sets the custom metric associated with this product.
+ */
+- (GAIEcommerceProduct *)setCustomMetric:(NSUInteger)index value:(NSNumber *)value;
+
+/*!
+ Builds an NSDictionary of fields stored in this instance suitable for a product action. The
+ index parameter is the index of this product in the product action list.
+
+ Normally, users will have no need to call this method.
+ */
+- (NSDictionary *)buildWithIndex:(NSUInteger)index;
+
+/*!
+ Builds an NSDictionary of fields stored in this instance suitable for an impression list. The
+ lIndex parameter is the index of the product impression list while the index parameter is the
+ index of this product in that impression list.
+
+ Normally, users will have no need to call this method.
+ */
+- (NSDictionary *)buildWithListIndex:(NSUInteger)lIndex index:(NSUInteger)index;
+@end
diff --git a/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAnalytics.framework/Headers/GAIEcommerceProductAction.h b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAnalytics.framework/Headers/GAIEcommerceProductAction.h
new file mode 100644
index 0000000000..e3da1c1502
--- /dev/null
+++ b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAnalytics.framework/Headers/GAIEcommerceProductAction.h
@@ -0,0 +1,107 @@
+/*!
+ @header GAIProductAction.h
+ @abstract Google Analytics iOS SDK Hit Format Header
+ @copyright Copyright 2014 Google Inc. All rights reserved.
+ */
+
+#import
+
+/*!
+ * Class to construct transaction/checkout or other product interaction related information for a
+ * Google Analytics hit. Use this class to report information about products sold, viewed or
+ * refunded. This class is intended to be used with GAIDictionaryBuilder.
+ *
+ * Typical usage:
+ *
+ * [tracker set:kGAIScreenName value:@"MyScreen"];
+ * GAIDictionaryBuilder *builder = [GAIDictionaryBuilder createScreenView];
+ * GAIEcommerceProductAction *action = [[GAIEcommerceProductAction alloc] init];
+ * [action setAction:kGAIPAPurchase];
+ * [action setTransactionId:@"TT-1234"];
+ * [action setRevenue:@3.14];
+ * [action setCouponCode:@"EXTRA100"];
+ * [builder setProductAction:action];
+ * GAIEcommerceProduct *product = [[GAIEcommerceProduct alloc] init];
+ * [product setId:@""PID-1234""];
+ * [product setName:@"Space Monkeys!"];
+ * [product setPrice:@100];
+ * [product setQuantity:@2];
+ * [builder addProduct:product];
+ * [tracker send:[builder build]];
+ *
+ */
+@interface GAIEcommerceProductAction : NSObject
+
+/*!
+ Sets the product action field for this product action. Valid values can be found in
+ GAIEcommerceFields.h under "product action values".
+ */
+- (GAIEcommerceProductAction *)setAction:(NSString *)productAction;
+
+/*!
+ The unique id associated with the transaction. This value is used for kGAIPAPurchase and
+ kGAIPARefund product actions.
+ */
+- (GAIEcommerceProductAction *)setTransactionId:(NSString *)transactionId;
+
+/*!
+ Sets the transaction's affiliation value. This value is used for kGAIPAPurchase and
+ kGAIPARefund product actions.
+ */
+- (GAIEcommerceProductAction *)setAffiliation:(NSString *)affiliation;
+
+/*!
+ Sets the transaction's total revenue. This value is used for kGAIPAPurchase and kGAIPARefund
+ product actions.
+ */
+- (GAIEcommerceProductAction *)setRevenue:(NSNumber *)revenue;
+
+/*!
+ Sets the transaction's total tax. This value is used for kGAIPAPurchase and kGAIPARefund
+ product actions.
+ */
+- (GAIEcommerceProductAction *)setTax:(NSNumber *)tax;
+
+/*!
+ Sets the transaction's total shipping costs. This value is used for kGAIPAPurchase and
+ kGAIPARefund product actions.
+ */
+- (GAIEcommerceProductAction *)setShipping:(NSNumber *)shipping;
+
+/*!
+ Sets the coupon code used in this transaction. This value is used for kGAIPAPurchase and
+ kGAIPARefund product actions.
+ */
+- (GAIEcommerceProductAction *)setCouponCode:(NSString *)couponCode;
+
+/*!
+ Sets the checkout process's progress. This value is used for kGAICheckout and
+ kGAICheckoutOptions product actions.
+ */
+- (GAIEcommerceProductAction *)setCheckoutStep:(NSNumber *)checkoutStep;
+
+/*!
+ Sets the option associated with the checkout. This value is used for kGAICheckout and
+ kGAICheckoutOptions product actions.
+ */
+- (GAIEcommerceProductAction *)setCheckoutOption:(NSString *)checkoutOption;
+
+/*!
+ Sets the list name associated with the products in Google Analytics beacons. This value is
+ used in kGAIPADetail and kGAIPAClick product actions.
+ */
+- (GAIEcommerceProductAction *)setProductActionList:(NSString *)productActionList;
+
+/*!
+ Sets the list source name associated with the products in Google Analytics beacons. This value
+ is used in kGAIPADetail and kGAIPAClick product actions.
+ */
+- (GAIEcommerceProductAction *)setProductListSource:(NSString *)productListSource;
+
+/*!
+ Builds an NSDictionary of fields stored in this instance representing this product action.
+
+ Normally, users will have no need to call this method.
+ */
+- (NSDictionary *)build;
+@end
diff --git a/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAnalytics.framework/Headers/GAIEcommercePromotion.h b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAnalytics.framework/Headers/GAIEcommercePromotion.h
new file mode 100644
index 0000000000..c7bf25af02
--- /dev/null
+++ b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAnalytics.framework/Headers/GAIEcommercePromotion.h
@@ -0,0 +1,54 @@
+/*!
+ @header GAIEcommercePromotion.h
+ @abstract Google Analytics iOS SDK Hit Format Header
+ @copyright Copyright 2014 Google Inc. All rights reserved.
+ */
+
+#import
+
+/*!
+ * Class to construct promotion related fields for Google Analytics hits. The fields from this class
+ * can be used to represent internal promotions that run within an app, such as banners, banner ads
+ * etc.
+ *
+ * Typical usage:
+ *
+ * GAIDictionaryBuilder *builder = [GAIDictionaryBuilder createScreenView];
+ * GAIEcommercePromotion *promotion = [[GAIEcommercePromotion alloc] init];
+ * [promotion setId:@"PROMO-ID1234"];
+ * [promotion setName:@"Home screen banner"];
+ * [builder set:kGAIPromotionClick forKey:kGAIPromotionAction];
+ * [builder addPromotion:promotion];
+ * [tracker send:builder.build]];
+ *
+ */
+@interface GAIEcommercePromotion : NSObject
+
+/*!
+ Sets the id that is used to identify a promotion in GA reports.
+ */
+- (GAIEcommercePromotion *)setId:(NSString *)pid;
+
+/*!
+ Sets the name that is used to identify a promotion in GA reports.
+ */
+- (GAIEcommercePromotion *)setName:(NSString *)name;
+
+/*!
+ Sets the name of the creative associated with the promotion.
+ */
+- (GAIEcommercePromotion *)setCreative:(NSString *)creative;
+
+/*!
+ Sets the position of the promotion.
+ */
+- (GAIEcommercePromotion *)setPosition:(NSString *)position;
+
+/*!
+ Builds an NSDictionary of fields stored in this instance. The index parameter is the
+ index of this promotion in that promotion list.
+
+ Normally, users will have no need to call this method.
+ */
+- (NSDictionary *)buildWithIndex:(NSUInteger)index;
+@end
diff --git a/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAnalytics.framework/Headers/GAIFields.h b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAnalytics.framework/Headers/GAIFields.h
new file mode 100644
index 0000000000..762f31faaf
--- /dev/null
+++ b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAnalytics.framework/Headers/GAIFields.h
@@ -0,0 +1,134 @@
+/*!
+ @header GAIFields.h
+ @abstract Google Analytics iOS SDK Hit Format Header
+ @copyright Copyright 2013 Google Inc. All rights reserved.
+ */
+
+#import
+
+/*!
+ These fields can be used for the wire format parameter names required by
+ the |GAITracker| get, set and send methods as well as the set methods in the
+ |GAIDictionaryBuilder| class.
+ */
+extern NSString *const kGAIUseSecure;
+
+extern NSString *const kGAIHitType;
+extern NSString *const kGAITrackingId;
+extern NSString *const kGAIClientId;
+extern NSString *const kGAIDataSource;
+extern NSString *const kGAIAnonymizeIp;
+extern NSString *const kGAISessionControl;
+extern NSString *const kGAIDeviceModelVersion;
+extern NSString *const kGAIScreenResolution;
+extern NSString *const kGAIViewportSize;
+extern NSString *const kGAIEncoding;
+extern NSString *const kGAIScreenColors;
+extern NSString *const kGAILanguage;
+extern NSString *const kGAIJavaEnabled;
+extern NSString *const kGAIFlashVersion;
+extern NSString *const kGAINonInteraction;
+extern NSString *const kGAIReferrer;
+extern NSString *const kGAILocation;
+extern NSString *const kGAIHostname;
+extern NSString *const kGAIPage;
+extern NSString *const kGAIDescription; // synonym for kGAIScreenName
+extern NSString *const kGAIScreenName; // synonym for kGAIDescription
+extern NSString *const kGAITitle;
+extern NSString *const kGAIAdMobHitId;
+extern NSString *const kGAIAppName;
+extern NSString *const kGAIAppVersion;
+extern NSString *const kGAIAppId;
+extern NSString *const kGAIAppInstallerId;
+extern NSString *const kGAIUserId;
+
+extern NSString *const kGAIEventCategory;
+extern NSString *const kGAIEventAction;
+extern NSString *const kGAIEventLabel;
+extern NSString *const kGAIEventValue;
+
+extern NSString *const kGAISocialNetwork;
+extern NSString *const kGAISocialAction;
+extern NSString *const kGAISocialTarget;
+
+extern NSString *const kGAITransactionId;
+extern NSString *const kGAITransactionAffiliation;
+extern NSString *const kGAITransactionRevenue;
+extern NSString *const kGAITransactionShipping;
+extern NSString *const kGAITransactionTax;
+extern NSString *const kGAICurrencyCode;
+
+extern NSString *const kGAIItemPrice;
+extern NSString *const kGAIItemQuantity;
+extern NSString *const kGAIItemSku;
+extern NSString *const kGAIItemName;
+extern NSString *const kGAIItemCategory;
+
+extern NSString *const kGAICampaignSource;
+extern NSString *const kGAICampaignMedium;
+extern NSString *const kGAICampaignName;
+extern NSString *const kGAICampaignKeyword;
+extern NSString *const kGAICampaignContent;
+extern NSString *const kGAICampaignId;
+extern NSString *const kGAICampaignAdNetworkClickId;
+extern NSString *const kGAICampaignAdNetworkId;
+
+extern NSString *const kGAITimingCategory;
+extern NSString *const kGAITimingVar;
+extern NSString *const kGAITimingValue;
+extern NSString *const kGAITimingLabel;
+
+extern NSString *const kGAIExDescription;
+extern NSString *const kGAIExFatal;
+
+extern NSString *const kGAISampleRate;
+
+extern NSString *const kGAIIdfa;
+extern NSString *const kGAIAdTargetingEnabled;
+extern NSString *const kGAINpa;
+
+// hit types
+extern NSString *const kGAIAppView DEPRECATED_MSG_ATTRIBUTE("Use kGAIScreenView instead.");
+extern NSString *const kGAIScreenView;
+extern NSString *const kGAIEvent;
+extern NSString *const kGAISocial;
+extern NSString *const kGAITransaction;
+extern NSString *const kGAIItem;
+extern NSString *const kGAIException;
+extern NSString *const kGAITiming;
+
+/*!
+ This class provides several fields and methods useful as wire format parameter
+ names. The methods are used for wire format parameter names that are indexed.
+ */
+
+@interface GAIFields : NSObject
+
+/*!
+ Generates the correct parameter name for a content group with an index.
+
+ @param index the index of the content group.
+
+ @return an NSString representing the content group parameter for the index.
+ */
++ (NSString *)contentGroupForIndex:(NSUInteger)index;
+
+/*!
+ Generates the correct parameter name for a custon dimension with an index.
+
+ @param index the index of the custom dimension.
+
+ @return an NSString representing the custom dimension parameter for the index.
+ */
++ (NSString *)customDimensionForIndex:(NSUInteger)index;
+
+/*!
+ Generates the correct parameter name for a custom metric with an index.
+
+ @param index the index of the custom metric.
+
+ @return an NSString representing the custom metric parameter for the index.
+ */
++ (NSString *)customMetricForIndex:(NSUInteger)index;
+
+@end
diff --git a/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAnalytics.framework/Headers/GAILogger.h b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAnalytics.framework/Headers/GAILogger.h
new file mode 100644
index 0000000000..06291f2c1b
--- /dev/null
+++ b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAnalytics.framework/Headers/GAILogger.h
@@ -0,0 +1,49 @@
+/*!
+ @header GAILogger.h
+ @abstract Google Analytics iOS SDK Source
+ @copyright Copyright 2011 Google Inc. All rights reserved.
+ */
+
+#import
+
+typedef NS_ENUM(NSUInteger, GAILogLevel) {
+ kGAILogLevelNone = 0,
+ kGAILogLevelError = 1,
+ kGAILogLevelWarning = 2,
+ kGAILogLevelInfo = 3,
+ kGAILogLevelVerbose = 4
+};
+
+/*!
+ Protocol to be used for logging debug and informational messages from the SDK.
+ Implementations of this protocol can be provided to the |GAI| class,
+ to be used as the logger by the SDK. See the |logger| property in GAI.h.
+ */
+@protocol GAILogger
+@required
+
+/*!
+ Only messages of |logLevel| and below are logged.
+ */
+@property (nonatomic, assign) GAILogLevel logLevel;
+
+/*!
+ Logs message with log level |kGAILogLevelVerbose|.
+ */
+- (void)verbose:(NSString *)message;
+
+/*!
+ Logs message with log level |kGAILogLevelInfo|.
+ */
+- (void)info:(NSString *)message;
+
+/*!
+ Logs message with log level |kGAILogLevelWarning|.
+ */
+- (void)warning:(NSString *)message;
+
+/*!
+ Logs message with log level |kGAILogLevelError|.
+ */
+- (void)error:(NSString *)message;
+@end
diff --git a/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAnalytics.framework/Headers/GAITrackedViewController.h b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAnalytics.framework/Headers/GAITrackedViewController.h
new file mode 100644
index 0000000000..de19def00a
--- /dev/null
+++ b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAnalytics.framework/Headers/GAITrackedViewController.h
@@ -0,0 +1,33 @@
+/*!
+ @header GAITrackedViewController.h
+ @abstract Google Analytics for iOS Tracked View Controller Header
+ @copyright Copyright 2012 Google Inc. All rights reserved.
+ */
+
+#import
+#import
+
+@protocol GAITracker;
+
+/*!
+ Extends UIViewController to generate Google Analytics screenview calls
+ whenever the view appears; this is done by overriding the `viewDidAppear:`
+ method. The screen name must be set for any tracking calls to be made.
+
+ By default, this will use [GAI defaultTracker] for tracking calls, but one can
+ override this by setting the tracker property.
+ */
+@interface GAITrackedViewController : UIViewController
+
+/*!
+ The tracker on which view tracking calls are be made, or `nil`, in which case
+ [GAI defaultTracker] will be used.
+ */
+@property(nonatomic, assign) id tracker;
+/*!
+ The screen name, for purposes of Google Analytics tracking. If this is `nil`,
+ no tracking calls will be made.
+ */
+@property(nonatomic, copy) NSString *screenName;
+
+@end
diff --git a/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAnalytics.framework/Headers/GAITracker.h b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAnalytics.framework/Headers/GAITracker.h
new file mode 100644
index 0000000000..ca26e5df05
--- /dev/null
+++ b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAnalytics.framework/Headers/GAITracker.h
@@ -0,0 +1,62 @@
+/*!
+ @header GAITracker.h
+ @abstract Google Analytics iOS SDK Tracker Header
+ @copyright Copyright 2013 Google Inc. All rights reserved.
+*/
+
+#import
+
+/*!
+ Google Analytics tracking interface. Obtain instances of this interface from
+ [GAI trackerWithTrackingId:] to track screens, events, transactions, timing,
+ and exceptions. The implementation of this interface is thread-safe, and no
+ calls are expected to block or take a long time. All network and disk activity
+ will take place in the background.
+ */
+@protocol GAITracker
+
+/*!
+ Name of this tracker.
+ */
+@property(nonatomic, readonly) NSString *name;
+
+/*!
+ Allow collection of IDFA and related fields if set to true. Default is false.
+ */
+@property(nonatomic) BOOL allowIDFACollection;
+
+/*!
+ Allow fields to be included in personalization features. Default is true.
+ */
+@property(nonatomic) BOOL allowAdPersonalizationSignals;
+
+/*!
+ Set a tracking parameter.
+
+ @param parameterName The parameter name.
+
+ @param value The value to set for the parameter. If this is nil, the
+ value for the parameter will be cleared.
+ */
+- (void)set:(NSString *)parameterName
+ value:(NSString *)value;
+
+/*!
+ Get a tracking parameter.
+
+ @param parameterName The parameter name.
+
+ @returns The parameter value, or nil if no value for the given parameter is
+ set.
+ */
+- (NSString *)get:(NSString *)parameterName;
+
+/*!
+ Queue tracking information with the given parameter values.
+
+ @param parameters A map from parameter names to parameter values which will be
+ set just for this piece of tracking information, or nil for none.
+ */
+- (void)send:(NSDictionary *)parameters;
+
+@end
diff --git a/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAnalytics.framework/Headers/GoogleAnalytics-umbrella.h b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAnalytics.framework/Headers/GoogleAnalytics-umbrella.h
new file mode 100644
index 0000000000..ecdf71e2b3
--- /dev/null
+++ b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAnalytics.framework/Headers/GoogleAnalytics-umbrella.h
@@ -0,0 +1,26 @@
+#ifdef __OBJC__
+#import
+#else
+#ifndef FOUNDATION_EXPORT
+#if defined(__cplusplus)
+#define FOUNDATION_EXPORT extern "C"
+#else
+#define FOUNDATION_EXPORT extern
+#endif
+#endif
+#endif
+
+#import "GAI.h"
+#import "GAIDictionaryBuilder.h"
+#import "GAIEcommerceFields.h"
+#import "GAIEcommerceProduct.h"
+#import "GAIEcommerceProductAction.h"
+#import "GAIEcommercePromotion.h"
+#import "GAIFields.h"
+#import "GAILogger.h"
+#import "GAITrackedViewController.h"
+#import "GAITracker.h"
+
+FOUNDATION_EXPORT double GoogleAnalyticsVersionNumber;
+FOUNDATION_EXPORT const unsigned char GoogleAnalyticsVersionString[];
+
diff --git a/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAnalytics.framework/Info.plist b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAnalytics.framework/Info.plist
new file mode 100644
index 0000000000..489d587a75
--- /dev/null
+++ b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAnalytics.framework/Info.plist
@@ -0,0 +1,20 @@
+
+
+
+
+ CFBundleExecutable
+ GoogleAnalytics
+ CFBundleIdentifier
+ com.firebase.Firebase-GoogleAnalytics
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ GoogleAnalytics
+ CFBundlePackageType
+ FMWK
+ CFBundleVersion
+ 3.21.0
+ DTSDKName
+ iphonesimulator11.2
+
+
diff --git a/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAnalytics.framework/Modules/module.modulemap b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAnalytics.framework/Modules/module.modulemap
new file mode 100644
index 0000000000..0ad464ac01
--- /dev/null
+++ b/Libraries/Segment-GoogleAnalytics/GoogleAnalytics/Frameworks/GoogleAnalytics.xcframework/ios-arm64_x86_64-maccatalyst/GoogleAnalytics.framework/Modules/module.modulemap
@@ -0,0 +1,7 @@
+framework module GoogleAnalytics {
+umbrella header "GoogleAnalytics-umbrella.h"
+export *
+module * { export * }
+ link "sqlite3"
+ link "z"
+}
diff --git a/Libraries/Segment-GoogleAnalytics/LICENSE b/Libraries/Segment-GoogleAnalytics/LICENSE
new file mode 100644
index 0000000000..1298520867
--- /dev/null
+++ b/Libraries/Segment-GoogleAnalytics/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2014 Segment.io, Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/Libraries/Segment-GoogleAnalytics/Pod/Classes/SEGGoogleAnalyticsIntegration.h b/Libraries/Segment-GoogleAnalytics/Pod/Classes/SEGGoogleAnalyticsIntegration.h
new file mode 100644
index 0000000000..034f97078c
--- /dev/null
+++ b/Libraries/Segment-GoogleAnalytics/Pod/Classes/SEGGoogleAnalyticsIntegration.h
@@ -0,0 +1,16 @@
+#import
+#if defined(__has_include) && __has_include()
+#import
+#else
+#import
+#endif
+
+
+@interface SEGGoogleAnalyticsIntegration : NSObject
+
+@property (nonatomic, copy) NSDictionary *settings;
+@property (nonatomic, copy) NSDictionary *traits;
+
+- (id)initWithSettings:(NSDictionary *)settings;
+
+@end
diff --git a/Libraries/Segment-GoogleAnalytics/Pod/Classes/SEGGoogleAnalyticsIntegration.m b/Libraries/Segment-GoogleAnalytics/Pod/Classes/SEGGoogleAnalyticsIntegration.m
new file mode 100644
index 0000000000..84c32a8ea0
--- /dev/null
+++ b/Libraries/Segment-GoogleAnalytics/Pod/Classes/SEGGoogleAnalyticsIntegration.m
@@ -0,0 +1,289 @@
+#import
+#import
+#import "SEGGoogleAnalyticsIntegration.h"
+#import
+
+#if defined(__has_include) && __has_include()
+#import
+#import
+#else
+#import
+#import
+#endif
+
+
+@interface SEGGoogleAnalyticsIntegration ()
+
+@property (nonatomic, assign) id tracker;
+
+@end
+
+
+@implementation SEGGoogleAnalyticsIntegration
+
+- (id)initWithSettings:(NSDictionary *)settings
+{
+ if (self = [super init]) {
+ self.settings = settings;
+ // Require setup with the trackingId.
+ NSString *trackingId = [settings objectForKey:@"mobileTrackingId"];
+ self.tracker = [[GAI sharedInstance] trackerWithTrackingId:trackingId];
+ [[GAI sharedInstance] setDefaultTracker:self.tracker];
+
+ // Optionally turn on uncaught exception tracking.
+ NSString *reportUncaughtExceptions = [settings objectForKey:@"reportUncaughtExceptions"];
+ if ([reportUncaughtExceptions boolValue]) {
+ [GAI sharedInstance].trackUncaughtExceptions = YES;
+ SEGLog(@"[[GAI sharedInstance] defaultTracker] trackUncaughtExceptions = YES;");
+ }
+
+ // Optionally turn on GA remarketing features
+ NSString *demographicReports = [settings objectForKey:@"doubleClick"];
+ if ([demographicReports boolValue]) {
+ [self.tracker setAllowIDFACollection:YES];
+ SEGLog(@"[[[GAI sharedInstance] defaultTracker] setAllowIDFACollection:YES];");
+ }
+ }
+ return self;
+}
+
+- (void)identify:(SEGIdentifyPayload *)payload
+{
+ // remove existing traits
+ [self resetTraits];
+
+ if (self.shouldSendUserId && payload.userId) {
+ [self.tracker set:@"&uid" value:payload.userId];
+ SEGLog(@"[[[GAI sharedInstance] defaultTracker] set:&uid value:%@];", payload.userId);
+ }
+
+ self.traits = payload.traits;
+
+ [self.traits enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
+ [self.tracker set:key value:obj];
+ SEGLog(@"[[[GAI sharedInstance] defaultTracker] set:%@ value:%@];", key, obj);
+ }];
+
+ [self setCustomDimensionsAndMetricsOnDefaultTracker:payload.traits];
+}
+
++ (NSNumber *)extractRevenue:(NSDictionary *)dictionary withKey:(NSString *)revenueKey
+{
+ id revenueProperty = nil;
+
+ for (NSString *key in dictionary.allKeys) {
+ if ([key caseInsensitiveCompare:revenueKey] == NSOrderedSame) {
+ revenueProperty = dictionary[key];
+ break;
+ }
+ }
+
+ if (revenueProperty) {
+ if ([revenueProperty isKindOfClass:[NSString class]]) {
+ // Format the revenue.
+ NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
+ [formatter setNumberStyle:NSNumberFormatterDecimalStyle];
+ return [formatter numberFromString:revenueProperty];
+ } else if ([revenueProperty isKindOfClass:[NSNumber class]]) {
+ return revenueProperty;
+ }
+ }
+ return nil;
+}
+
+- (void)track:(SEGTrackPayload *)payload
+{
+ if ([payload.event isEqualToString:@"Order Completed"]) {
+ [self orderCompleted:payload.properties];
+ return;
+ }
+
+ // Try to extract a "category" property.
+ NSString *category = @"All"; // default
+ NSString *categoryProperty = [payload.properties objectForKey:@"category"];
+ if (categoryProperty) {
+ category = categoryProperty;
+ }
+
+ // Try to extract a "label" property.
+ NSString *label = [payload.properties objectForKey:@"label"];
+
+ // Try to extract a "revenue" or "value" property.
+ NSNumber *value = [SEGGoogleAnalyticsIntegration extractRevenue:payload.properties withKey:@"revenue"];
+ NSNumber *valueFallback = [SEGGoogleAnalyticsIntegration extractRevenue:payload.properties withKey:@"value"];
+ if (!value && valueFallback) {
+ // fall back to the "value" property
+ value = valueFallback;
+ }
+
+ GAIDictionaryBuilder *hitBuilder =
+ [GAIDictionaryBuilder createEventWithCategory:category
+ action:payload.event
+ label:label
+ value:value];
+ NSDictionary *hit = [self setCustomDimensionsAndMetricsAndCampaignData:payload.properties context:payload.context event:payload.event onHit:hitBuilder];
+ [self.tracker send:hit];
+ SEGLog(@"[[[GAI sharedInstance] defaultTracker] send:%@];", hit);
+}
+
+- (void)screen:(SEGScreenPayload *)payload
+{
+ [self.tracker set:kGAIScreenName value:payload.name];
+ SEGLog(@"[[[GAI sharedInstance] defaultTracker] set:%@ value:%@];", kGAIScreenName, payload.name);
+
+ GAIDictionaryBuilder *hitBuilder = [GAIDictionaryBuilder createScreenView];
+
+ NSDictionary *hit = [self setCustomDimensionsAndMetricsAndCampaignData:payload.properties context:payload.context event:payload.name onHit:hitBuilder];
+
+ [self.tracker send:hit];
+ SEGLog(@"[[[GAI sharedInstance] defaultTracker] send:%@];", hit);
+}
+
+#pragma mark - Ecommerce
+
+- (void)orderCompleted:(NSDictionary *)properties
+{
+ NSString *orderId = properties[@"orderId"];
+ NSString *currency = properties[@"currency"] ?: @"USD";
+
+ NSDictionary *transaction = [[GAIDictionaryBuilder createTransactionWithId:orderId
+ affiliation:properties[@"affiliation"]
+ revenue:[SEGGoogleAnalyticsIntegration extractRevenue:properties withKey:@"revenue"]
+ tax:properties[@"tax"]
+ shipping:properties[@"shipping"]
+ currencyCode:currency] build];
+ [self.tracker send:transaction];
+ SEGLog(@"[[[GAI sharedInstance] defaultTracker] send:%@];", transaction);
+
+ NSDictionary *item = [[GAIDictionaryBuilder createItemWithTransactionId:orderId
+ name:properties[@"name"]
+ sku:properties[@"sku"]
+ category:properties[@"category"]
+ price:properties[@"price"]
+ quantity:properties[@"quantity"]
+ currencyCode:currency] build];
+ [self.tracker send:item];
+ SEGLog(@"[[[GAI sharedInstance] defaultTracker] send:%@];", item);
+}
+
+- (void)reset
+{
+ [self.tracker set:@"&uid" value:nil];
+ SEGLog(@"[[[GAI sharedInstance] defaultTracker] set:&uid value:nil];");
+
+ [self resetTraits];
+}
+
+
+- (void)flush
+{
+ [[GAI sharedInstance] dispatch];
+}
+
+#pragma mark - Private
+
+// event and screen properties are generall hit-scoped dimensions, so we want
+// to set them on the hits, not the tracker
+- (NSDictionary *)setCustomDimensionsAndMetricsAndCampaignData:(NSDictionary *)properties context:(NSDictionary *)context event:(NSString *)event onHit:(GAIDictionaryBuilder *)hit
+{
+ NSDictionary *customDimensions = self.settings[@"dimensions"];
+ NSDictionary *customMetrics = self.settings[@"metrics"];
+
+ for (NSString *key in properties) {
+ NSString *dimensionString = [customDimensions objectForKey:key];
+ NSUInteger dimension = [self extractNumber:dimensionString from:[@"dimension" length]];
+ if (dimension != 0) {
+ [hit set:[properties objectForKey:key]
+ forKey:[GAIFields customDimensionForIndex:dimension]];
+ }
+
+ NSString *metricString = [customMetrics objectForKey:key];
+ NSUInteger metric = [self extractNumber:metricString from:[@"metric" length]];
+ if (metric != 0) {
+ [hit set:[properties objectForKey:key]
+ forKey:[GAIFields customMetricForIndex:metric]];
+ }
+
+ }
+
+ NSDictionary *campaign = context[@"campaign"];
+ if ([campaign isKindOfClass:[NSDictionary class]]) {
+ if ([campaign[@"source"] isKindOfClass:[NSString class]]) {
+ [hit set:campaign[@"source"] forKey:kGAICampaignSource];
+ if ([campaign[@"name"] isKindOfClass:[NSString class]]) {
+ [hit set:campaign[@"name"] forKey:kGAICampaignName];
+ }
+ if ([campaign[@"content"] isKindOfClass:[NSString class]]) {
+ [hit set:campaign[@"content"] forKey:kGAICampaignContent];
+ }
+ if ([campaign[@"medium"] isKindOfClass:[NSString class]]) {
+ [hit set:campaign[@"medium"] forKey:kGAICampaignMedium];
+ }
+ } else {
+ // https://developers.google.com/analytics/devguides/collection/ios/v3/campaigns
+ SEGLog(@"WARNING: campaign source is a required field for GA. Omitting campaign attributes");
+ }
+ // Segment does not currently spec the following keys that GA accepts
+ // kGAICampaignKeyword
+ // kGAICampaignId
+ // kGAICampaignAdNetworkClickId
+ // kGAICampaignAdNetworkId
+ }
+
+ if ([event isEqualToString:@"Deep Link Opened"]) {
+ [hit setCampaignParametersFromUrl:[properties valueForKey:@"url"]];
+ SEGLog(@"[hit setCampaignParametersFromUrl: %@]", [properties valueForKey:@"url"]);
+ }
+
+ return [hit build];
+}
+
+
+// e.g. extractNumber:"dimension3" from:[@"dimension" length] returns 3
+// e.g. extractNumber:"metric9" from:[@"metric" length] returns 9
+- (int)extractNumber:(NSString *)text from:(NSUInteger)start
+{
+ if (text == nil || [text length] == 0) {
+ return 0;
+ }
+ return [[text substringFromIndex:start] intValue];
+}
+
+// traits are user-scoped dimensions. as such, it makes sense to set them on the tracker
+- (void)setCustomDimensionsAndMetricsOnDefaultTracker:(NSDictionary *)traits
+{
+ NSDictionary *customDimensions = self.settings[@"dimensions"];
+ NSDictionary *customMetrics = self.settings[@"metrics"];
+
+ for (NSString *key in traits) {
+ NSString *dimensionString = [customDimensions objectForKey:key];
+ NSUInteger dimension = [self extractNumber:dimensionString from:[@"dimension" length]];
+ if (dimension != 0) {
+ [self.tracker set:[GAIFields customDimensionForIndex:dimension]
+ value:[traits objectForKey:key]];
+ }
+
+ NSString *metricString = [customMetrics objectForKey:key];
+ NSUInteger metric = [self extractNumber:metricString from:[@"metric" length]];
+ if (metric != 0) {
+ [self.tracker set:[GAIFields customMetricForIndex:metric]
+ value:[traits objectForKey:key]];
+ }
+ }
+}
+
+- (BOOL)shouldSendUserId
+{
+ return [[self.settings objectForKey:@"sendUserId"] boolValue];
+}
+
+- (void)resetTraits
+{
+ [self.traits enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
+ [self.tracker set:key value:nil];
+ SEGLog(@"[[[GAI sharedInstance] defaultTracker] set:%@ value:nil];", key);
+ }];
+ self.traits = nil;
+}
+
+@end
diff --git a/Libraries/Segment-GoogleAnalytics/Pod/Classes/SEGGoogleAnalyticsIntegrationFactory.h b/Libraries/Segment-GoogleAnalytics/Pod/Classes/SEGGoogleAnalyticsIntegrationFactory.h
new file mode 100644
index 0000000000..a2aa04db64
--- /dev/null
+++ b/Libraries/Segment-GoogleAnalytics/Pod/Classes/SEGGoogleAnalyticsIntegrationFactory.h
@@ -0,0 +1,13 @@
+#import
+#if defined(__has_include) && __has_include()
+#import
+#else
+#import
+#endif
+
+
+@interface SEGGoogleAnalyticsIntegrationFactory : NSObject
+
++ (instancetype)instance;
+
+@end
diff --git a/Libraries/Segment-GoogleAnalytics/Pod/Classes/SEGGoogleAnalyticsIntegrationFactory.m b/Libraries/Segment-GoogleAnalytics/Pod/Classes/SEGGoogleAnalyticsIntegrationFactory.m
new file mode 100644
index 0000000000..9d9680a1c1
--- /dev/null
+++ b/Libraries/Segment-GoogleAnalytics/Pod/Classes/SEGGoogleAnalyticsIntegrationFactory.m
@@ -0,0 +1,33 @@
+#import "SEGGoogleAnalyticsIntegrationFactory.h"
+#import "SEGGoogleAnalyticsIntegration.h"
+
+
+@implementation SEGGoogleAnalyticsIntegrationFactory
+
++ (instancetype)instance
+{
+ static dispatch_once_t once;
+ static SEGGoogleAnalyticsIntegrationFactory *sharedInstance;
+ dispatch_once(&once, ^{
+ sharedInstance = [[self alloc] init];
+ });
+ return sharedInstance;
+}
+
+- (id)init
+{
+ self = [super init];
+ return self;
+}
+
+- (id)createWithSettings:(NSDictionary *)settings forAnalytics:(SEGAnalytics *)analytics
+{
+ return [[SEGGoogleAnalyticsIntegration alloc] initWithSettings:settings];
+}
+
+- (NSString *)key
+{
+ return @"Google Analytics";
+}
+
+@end
diff --git a/Libraries/Segment-GoogleAnalytics/README.md b/Libraries/Segment-GoogleAnalytics/README.md
new file mode 100644
index 0000000000..89d6f6eb6d
--- /dev/null
+++ b/Libraries/Segment-GoogleAnalytics/README.md
@@ -0,0 +1,75 @@
+# Analytics
+
+[![CircleCI](https://circleci.com/gh/segment-integrations/analytics-ios-integration-google-analytics.svg?style=svg)](https://circleci.com/gh/segment-integrations/analytics-ios-integration-google-analytics)
+[![Version](https://img.shields.io/cocoapods/v/Segment-google-analytics.svg?style=flat)](http://cocoapods.org/pods/Segment-googleanalytics)
+[![License](https://img.shields.io/cocoapods/l/Segment-google-analytics.svg?style=flat)](http://cocoapods.org/pods/Segment-googleanalytics)
+
+**WARNING**: This SDK has been deprecated. On September 17th, 2019 this repository will be archived as read-only and no longer actively maintained. [Google is sunsetting their Google Analytics mobile SDKs on October 31st.](https://support.google.com/firebase/answer/9167112?hl=en). Please [see our migration tutorial](https://segment.com/docs/destinations/google-analytics/#migrating-deprecated-google-analytics-mobile-sdks-to-firebase) to learn more about migrating to our Firebase SDKs for iOS.
+
+Google Analytics integration for analytics-ios.
+
+## Installation
+
+To install the Segment-Google Analytics integration, simply add this line to your [CocoaPods](http://cocoapods.org) `Podfile`:
+
+```ruby
+pod "Segment-GoogleAnalytics"
+```
+
+## Usage
+
+After adding the dependency, you must register the integration with our SDK. To do this, import the Google Analytics integration in your `AppDelegate`:
+
+```
+#import
+```
+
+And add the following lines:
+
+```
+NSString *const SEGMENT_WRITE_KEY = @" ... ";
+SEGAnalyticsConfiguration *config = [SEGAnalyticsConfiguration configurationWithWriteKey:SEGMENT_WRITE_KEY];
+
+[config use:[SEGGoogleAnalyticsIntegrationFactory instance]];
+
+[SEGAnalytics setupWithConfiguration:config];
+
+```
+
+
+## License
+
+```
+WWWWWW||WWWWWW
+ W W W||W W W
+ ||
+ ( OO )__________
+ / | \
+ /o o| MIT \
+ \___/||_||__||_|| *
+ || || || ||
+ _||_|| _||_||
+ (__|__|(__|__|
+
+The MIT License (MIT)
+
+Copyright (c) 2014 Segment, Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+```
diff --git a/Podfile b/Podfile
index 3dfe552452..317d0319eb 100644
--- a/Podfile
+++ b/Podfile
@@ -26,7 +26,6 @@ target 'edX' do
pod 'MSAL', '= 1.2.5', :modular_headers => true
pod 'NewRelicAgent', '= 7.4.2'
pod 'Segment-Appboy', '= 4.6.0'
- pod 'Segment-GoogleAnalytics', '= 1.3.3'
pod 'Smartling.i18n', '~> 1.0.14'
pod 'YoutubePlayer-in-WKWebView', '~> 0.3.8'
end
diff --git a/Source/OEXAppDelegate.m b/Source/OEXAppDelegate.m
index 838e1693e6..2823ff90cf 100644
--- a/Source/OEXAppDelegate.m
+++ b/Source/OEXAppDelegate.m
@@ -15,7 +15,7 @@
@import GoogleSignIn;
#import
-#import
+#import "SEGGoogleAnalyticsIntegrationFactory.h"
#import "SEGFirebaseIntegrationFactory.h"
#import "OEXAppDelegate.h"
#import "edX-Swift.h"
diff --git a/edX.xcodeproj/project.pbxproj b/edX.xcodeproj/project.pbxproj
index f15a0b4eb0..74243de625 100644
--- a/edX.xcodeproj/project.pbxproj
+++ b/edX.xcodeproj/project.pbxproj
@@ -842,6 +842,11 @@
E0EAD98E2ABC1B87001C6470 /* screen_3.gif in Resources */ = {isa = PBXBuildFile; fileRef = E0EAD98C2ABC1B87001C6470 /* screen_3.gif */; };
E0EAD98F2ABC1B87001C6470 /* screen_4.gif in Resources */ = {isa = PBXBuildFile; fileRef = E0EAD98D2ABC1B87001C6470 /* screen_4.gif */; };
E0EAD9912ABD3727001C6470 /* screen_1.gif in Resources */ = {isa = PBXBuildFile; fileRef = E0EAD9902ABD3727001C6470 /* screen_1.gif */; };
+ E0EAD99E2ACEBA48001C6470 /* SEGGoogleAnalyticsIntegration.m in Sources */ = {isa = PBXBuildFile; fileRef = E0EAD9972ACEBA48001C6470 /* SEGGoogleAnalyticsIntegration.m */; };
+ E0EAD99F2ACEBA48001C6470 /* SEGGoogleAnalyticsIntegrationFactory.m in Sources */ = {isa = PBXBuildFile; fileRef = E0EAD9982ACEBA48001C6470 /* SEGGoogleAnalyticsIntegrationFactory.m */; };
+ E0EAD9A02ACEBA48001C6470 /* LICENSE in Resources */ = {isa = PBXBuildFile; fileRef = E0EAD9992ACEBA48001C6470 /* LICENSE */; };
+ E0EAD9A12ACEBA48001C6470 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = E0EAD99A2ACEBA48001C6470 /* README.md */; };
+ E0EAD9A22ACEBA48001C6470 /* GoogleAnalytics.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = E0EAD99D2ACEBA48001C6470 /* GoogleAnalytics.xcframework */; };
E0EC115C221AE70900F0574A /* ListenableObject.m in Sources */ = {isa = PBXBuildFile; fileRef = E0EC115B221AE70900F0574A /* ListenableObject.m */; };
E0EC12AD2216A6910090EEF6 /* NSString+OEXFormatting.h in Headers */ = {isa = PBXBuildFile; fileRef = 77E647C51C90C70600B6740D /* NSString+OEXFormatting.h */; settings = {ATTRIBUTES = (Public, ); }; };
E0EDDBD12AB9698600DB3CFE /* screen_5.png in Resources */ = {isa = PBXBuildFile; fileRef = E0EDDBCF2AB9698600DB3CFE /* screen_5.png */; };
@@ -1948,6 +1953,13 @@
E0EAD98C2ABC1B87001C6470 /* screen_3.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = screen_3.gif; sourceTree = ""; };
E0EAD98D2ABC1B87001C6470 /* screen_4.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = screen_4.gif; sourceTree = ""; };
E0EAD9902ABD3727001C6470 /* screen_1.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = screen_1.gif; sourceTree = ""; };
+ E0EAD9952ACEBA48001C6470 /* SEGGoogleAnalyticsIntegration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SEGGoogleAnalyticsIntegration.h; sourceTree = ""; };
+ E0EAD9962ACEBA48001C6470 /* SEGGoogleAnalyticsIntegrationFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SEGGoogleAnalyticsIntegrationFactory.h; sourceTree = ""; };
+ E0EAD9972ACEBA48001C6470 /* SEGGoogleAnalyticsIntegration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SEGGoogleAnalyticsIntegration.m; sourceTree = ""; };
+ E0EAD9982ACEBA48001C6470 /* SEGGoogleAnalyticsIntegrationFactory.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SEGGoogleAnalyticsIntegrationFactory.m; sourceTree = ""; };
+ E0EAD9992ACEBA48001C6470 /* LICENSE */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = LICENSE; sourceTree = ""; };
+ E0EAD99A2ACEBA48001C6470 /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; };
+ E0EAD99D2ACEBA48001C6470 /* GoogleAnalytics.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = GoogleAnalytics.xcframework; sourceTree = ""; };
E0EC115A221AE70900F0574A /* ListenableObject.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ListenableObject.h; sourceTree = ""; };
E0EC115B221AE70900F0574A /* ListenableObject.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ListenableObject.m; sourceTree = ""; };
E0EDDBCF2AB9698600DB3CFE /* screen_5.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = screen_5.png; sourceTree = ""; };
@@ -2014,6 +2026,7 @@
E02661732269A821002721B7 /* libOCMock.a in Frameworks */,
BE0EE28B192B78DA00F9FF98 /* libz.dylib in Frameworks */,
BE0EE287192B78C400F9FF98 /* CoreTelephony.framework in Frameworks */,
+ E0EAD9A22ACEBA48001C6470 /* GoogleAnalytics.xcframework in Frameworks */,
E082D60325C0070800C94C9A /* Photos.framework in Frameworks */,
BECB7B131924C0C3009C77F1 /* UIKit.framework in Frameworks */,
BECB7B0F1924C0C3009C77F1 /* Foundation.framework in Frameworks */,
@@ -3535,6 +3548,7 @@
BE76FEAA193C8D9C00BB9BDD /* External Libraries */ = {
isa = PBXGroup;
children = (
+ E0EAD9922ACEBA48001C6470 /* Segment-GoogleAnalytics */,
E0AA9106280FFC8E00D39A4D /* KeychainSwift */,
5FFB73AE2849F10D000523BF /* DropDown */,
5F592ACE257521CF00D96214 /* SwiftDate */,
@@ -4035,6 +4049,53 @@
name = WhatsNew;
sourceTree = "";
};
+ E0EAD9922ACEBA48001C6470 /* Segment-GoogleAnalytics */ = {
+ isa = PBXGroup;
+ children = (
+ E0EAD9932ACEBA48001C6470 /* Pod */,
+ E0EAD9992ACEBA48001C6470 /* LICENSE */,
+ E0EAD99A2ACEBA48001C6470 /* README.md */,
+ E0EAD99B2ACEBA48001C6470 /* GoogleAnalytics */,
+ );
+ name = "Segment-GoogleAnalytics";
+ path = "Libraries/Segment-GoogleAnalytics";
+ sourceTree = SOURCE_ROOT;
+ };
+ E0EAD9932ACEBA48001C6470 /* Pod */ = {
+ isa = PBXGroup;
+ children = (
+ E0EAD9942ACEBA48001C6470 /* Classes */,
+ );
+ path = Pod;
+ sourceTree = "";
+ };
+ E0EAD9942ACEBA48001C6470 /* Classes */ = {
+ isa = PBXGroup;
+ children = (
+ E0EAD9952ACEBA48001C6470 /* SEGGoogleAnalyticsIntegration.h */,
+ E0EAD9962ACEBA48001C6470 /* SEGGoogleAnalyticsIntegrationFactory.h */,
+ E0EAD9972ACEBA48001C6470 /* SEGGoogleAnalyticsIntegration.m */,
+ E0EAD9982ACEBA48001C6470 /* SEGGoogleAnalyticsIntegrationFactory.m */,
+ );
+ path = Classes;
+ sourceTree = "";
+ };
+ E0EAD99B2ACEBA48001C6470 /* GoogleAnalytics */ = {
+ isa = PBXGroup;
+ children = (
+ E0EAD99C2ACEBA48001C6470 /* Frameworks */,
+ );
+ path = GoogleAnalytics;
+ sourceTree = "";
+ };
+ E0EAD99C2ACEBA48001C6470 /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ E0EAD99D2ACEBA48001C6470 /* GoogleAnalytics.xcframework */,
+ );
+ path = Frameworks;
+ sourceTree = "";
+ };
/* End PBXGroup section */
/* Begin PBXHeadersBuildPhase section */
@@ -4291,6 +4352,7 @@
5F6F2B62255AABA400AA3708 /* Inter-Bold.ttf in Resources */,
E048260227AD519A0046B8AF /* screen_2.png in Resources */,
77DC29601ABCA0F200FAD22C /* OEXLoginSplashViewController.xib in Resources */,
+ E0EAD9A02ACEBA48001C6470 /* LICENSE in Resources */,
69ECC6181D50D1170030CF87 /* bt_google_RTL.png in Resources */,
6926CDB01D59BE3600A16E22 /* ic_seek_thumb.png in Resources */,
22F8A9141F4708A50025E18A /* Main.storyboard in Resources */,
@@ -4316,6 +4378,7 @@
69ECC6291D50D1170030CF87 /* check@2x.png in Resources */,
5F6F2B68255AABA400AA3708 /* Inter-ExtraBoldItalic.ttf in Resources */,
E0514DE8285C4F7900D645E0 /* RobotoMono-SemiBold.ttf in Resources */,
+ E0EAD9A12ACEBA48001C6470 /* README.md in Resources */,
22A4191E1EB1CF1500BBC8CA /* shareCourse@2x.png in Resources */,
E021F46C1F739599007A26E7 /* loginScreenImage@2x~ipad.png in Resources */,
B4B6D64A1A95CF33000F44E8 /* OEXUserLicenseAgreementViewController.xib in Resources */,
@@ -4728,6 +4791,7 @@
7758FFDE1C32FD6A0072355B /* EnrollmentShared.swift in Sources */,
5D43B1861B0C1F9200448B52 /* PostTableViewCell.swift in Sources */,
774BC7F41B4B0D700084F902 /* DiscussionTopic.swift in Sources */,
+ E0EAD99E2ACEBA48001C6470 /* SEGGoogleAnalyticsIntegration.m in Sources */,
E054B09D1EC2E8C900FACBA6 /* OEXInterface+WhatsNew.swift in Sources */,
1913DD4419502E5D00573977 /* OEXVideoSummary.m in Sources */,
9EAB5BE91B564C2F00CA9F3C /* ProgressController.swift in Sources */,
@@ -4835,6 +4899,7 @@
9EE684CB1B3D5FAB00C7B157 /* CourseHandoutsViewController.swift in Sources */,
7C2DD5511D4A790F006148E0 /* UserPreferenceAPI.swift in Sources */,
9E0D4BD31B0C84F800B2417D /* CourseUnknownBlockViewController.swift in Sources */,
+ E0EAD99F2ACEBA48001C6470 /* SEGGoogleAnalyticsIntegrationFactory.m in Sources */,
19E1F02B1A272DDC00C2E1BE /* LastAccessed.m in Sources */,
2285121720FDC365006A4736 /* DiscoveryHelper.swift in Sources */,
7784C68B1B03BA1E00529C7C /* LoadStateViewController.swift in Sources */,