### Project Setup and Configuration Source: https://github.com/larryaasen/upgrader/blob/main/example/linux/CMakeLists.txt Sets the minimum required CMake version and defines the project name and languages. This is a standard starting point for any CMake project. ```cmake cmake_minimum_required(VERSION 3.10) project(runner LANGUAGES CXX) ``` -------------------------------- ### Install Executable Source: https://github.com/larryaasen/upgrader/blob/main/example/windows/CMakeLists.txt Installs the main executable to the specified runtime destination. ```cmake install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}" COMPONENT Runtime) ``` -------------------------------- ### Configure Installation Prefix Source: https://github.com/larryaasen/upgrader/blob/main/example/linux/CMakeLists.txt Sets the installation prefix to a 'bundle' directory within the project's binary directory. This is done to ensure a relocatable bundle is created during installation. ```cmake set(BUILD_BUNDLE_DIR "${PROJECT_BINARY_DIR}/bundle") if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) endif() ``` -------------------------------- ### Install Bundled Libraries Source: https://github.com/larryaasen/upgrader/blob/main/example/linux/CMakeLists.txt Iterates through a list of bundled libraries and installs each one to the 'lib' subdirectory within the installation prefix. This ensures all necessary shared libraries are included in the bundle. ```cmake foreach(bundled_library ${PLUGIN_BUNDLED_LIBRARIES}) install(FILES "${bundled_library}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" COMPONENT Runtime) endforeach(bundled_library) ``` -------------------------------- ### Installation Prefix Configuration Source: https://github.com/larryaasen/upgrader/blob/main/example/windows/CMakeLists.txt Configures the installation prefix, especially for Visual Studio builds, to place support files next to the executable. ```cmake # Support files are copied into place next to the executable, so that it can # run in place. This is done instead of making a separate bundle (as on Linux) # so that building and running from within Visual Studio will work. set(BUILD_BUNDLE_DIR "$") # Make the "install" step default, as it's required to run. set(CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD 1) if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) endif() set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data") set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}") ``` -------------------------------- ### Install Flutter Library Source: https://github.com/larryaasen/upgrader/blob/main/example/windows/CMakeLists.txt Installs the main Flutter library file to the bundle's library directory. ```cmake install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" COMPONENT Runtime) ``` -------------------------------- ### Install Assets Directory Source: https://github.com/larryaasen/upgrader/blob/main/example/windows/CMakeLists.txt Removes the existing assets directory and then copies the new assets directory to the installation destination to ensure freshness. ```cmake # Fully re-copy the assets directory on each build to avoid having stale files # from a previous install. set(FLUTTER_ASSET_DIR_NAME "flutter_assets") install(CODE " file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\") " COMPONENT Runtime) install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) ``` -------------------------------- ### Install Bundled Plugin Libraries Source: https://github.com/larryaasen/upgrader/blob/main/example/windows/CMakeLists.txt Installs any bundled plugin libraries to the bundle's library directory if they exist. ```cmake if(PLUGIN_BUNDLED_LIBRARIES) install(FILES "${PLUGIN_BUNDLED_LIBRARIES}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" COMPONENT Runtime) endif() ``` -------------------------------- ### XHR.open Source: https://github.com/larryaasen/upgrader/blob/main/test/test_play_store_page3.txt Initializes a request or starts a new one. This must be called before any network requests are made. ```APIDOC ## Xw.prototype.open(method, url) ### Description Opens a connection to another network location. This method prepares the request but does not send it. ### Method POST ### Endpoint /open ### Parameters #### Path Parameters - **method** (string) - Required - The HTTP method to use (e.g., 'GET', 'POST'). - **url** (string) - Required - The URL to send the request to. ``` -------------------------------- ### Install AOT Library Source: https://github.com/larryaasen/upgrader/blob/main/example/windows/CMakeLists.txt Installs the Ahead-Of-Time (AOT) compiled library to the data directory, but only for Profile and Release configurations. ```cmake # Install the AOT library on non-Debug builds only. install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" CONFIGURATIONS Profile;Release COMPONENT Runtime) ``` -------------------------------- ### Inheritance setup Source: https://github.com/larryaasen/upgrader/blob/main/test/test_play_store_page6.txt Sets up classical inheritance between two classes. The child class inherits from the parent class. ```javascript _.t=function(a,b){a.prototype=(0,_.ia)(b.prototype);a.prototype.constructor=a;if(_.na)(0,_.na)(a,b);else for(var c in b)if("prototype"!=c)if(Object.defineProperties){var d=Object.getOwnPropertyDescriptor(b,c);d&&Object.defineProperty(a,c,d)}else a[c]=b[c]}; ``` -------------------------------- ### Initialize Performance Monitoring Source: https://github.com/larryaasen/upgrader/blob/main/test/test_play_store_page6.txt Initializes performance monitoring by setting the start time for latency measurements. This is used to track the time from navigation start to various events. ```javascript var a=window,d=a.performance,l=k();a.cc_latency_start_time=d&&d.now?0:d&&d.timing&&d.timing.navigationStart?d.timing.navigationStart:l;function k(){return d&&d.now?d.now():(new Date).getTime()}function n(f){if(d&&d.now&&d.mark){var h=d.mark(f);if(h)return h.startTime;if(d.getEntriesByName&&(f=d.getEntriesByName(f).pop()))return f.startTime}return k()} ``` -------------------------------- ### Secure Window Messaging Setup Source: https://github.com/larryaasen/upgrader/blob/main/test/test_play_store_page5.txt Configures secure messaging between windows, ensuring messages are received only from expected origins. Use for cross-origin communication. ```javascript var Ho,Io;_.Jo=function(a){var b=a.Ea,c=void 0===a.Rb?"ZNWN1d":a.Rb,d=void 0===a.onMessage?void 0:a.onMessage,e=void 0===a.Sd?void 0:a.Sd;return Ho({destination:a.destination,sc:function(){return b.contentWindow},nk:Io(a.origin),Rb:c,onMessage:d,Sd:e})}; Ho=function(a){var b=a.destination,c=a.sc,d=a.nk,e=void 0===a.Lk?void 0:a.Lk,f=a.Rb,g=void 0===a.onMessage?void 0:a.onMessage,k=void 0===a.Sd?void 0:a.Sd,l=Object.create(null);d.forEach(function(m){l[m]=!0});return new Co(new _.Ad(function(m,r){var v=function(A){if(A.source===c())if(!0!==l[A.origin]){b.removeEventListener("message",v,!1);var C=d.join(", ");r(Error("sa`"+(1===d.length?C:"["+C+"]")+"`"+A.origin))}else(A.data.n||A.data)===f&&(b.removeEventListener("message",v,!1),e&&A.data.t!== e?r(Error("ta`"+e+"`"+A.data.t)):(m(Go(A.ports[0],g)),k&&k(A)))};b.addEventListener("message",v,!1)})};Io=function(a){a="string"===typeof a?[a]:a;var b=Object.create(null);a.forEach(function(c){if("null"===c)throw Error("ua");b[c]=!0});return a} ``` -------------------------------- ### Configuration and Initialization Source: https://github.com/larryaasen/upgrader/blob/main/test/test_play_store_page6.txt Handles initialization of configuration objects, particularly for the `gbar` component. Use `Kf` to create instances with specific configurations. ```javascript var Hf=function(a){_.B.call(this,a)};_.t(Hf,_.B);_.If=new Hf(window.gbar&&window.gbar._CONFIG?window.gbar._CONFIG[0]:[[,,,,,,,[]],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]]);_.Jf=_.y(_.L(_.If,3)); ``` -------------------------------- ### Clean Build Bundle Directory on Install Source: https://github.com/larryaasen/upgrader/blob/main/example/linux/CMakeLists.txt Removes and recreates the build bundle directory during the installation process. This ensures a clean state for the installation. ```cmake install( CODE " file(REMOVE_RECURSE \"${BUILD_BUNDLE_DIR}/\") " COMPONENT Runtime) ``` -------------------------------- ### Install AOT Library Conditionally Source: https://github.com/larryaasen/upgrader/blob/main/example/linux/CMakeLists.txt This configuration installs the AOT library only for non-Debug builds. It checks the CMAKE_BUILD_TYPE variable to determine whether to include the installation step. ```cmake if(NOT CMAKE_BUILD_TYPE MATCHES "Debug") install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" COMPONENT Runtime) endif() ``` -------------------------------- ### Instantiate and Configure Button Sets Source: https://github.com/larryaasen/upgrader/blob/main/test/test_play_store_page6.txt Demonstrates the instantiation and configuration of various button sets using the custom `_.lx` class. Includes 'OK', 'Cancel', 'Yes', 'No', 'Save', and 'Continue' buttons. ```javascript "undefined"!=typeof document&&(_.mx(new _.lx,_.nx,!0,!0),_.mx(_.mx(new _.lx,_.nx,!0),_.ox,!1,!0),_.mx(_.mx(new _.lx,px,!0),qx,!1,!0),_.mx(_.mx(_.mx(new _.lx,px),qx,!0),_.ox,!1,!0),_.mx(_.mx(_.mx(new _.lx,sx),rx),_.ox,!0,!0)); ``` -------------------------------- ### Initialize Performance Monitoring Source: https://github.com/larryaasen/upgrader/blob/main/test/test_play_store_page3.txt Sets up performance monitoring by recording the start time for various events like JS load, CSS load, and image load. Use this to track performance metrics. ```javascript var a=window,d=a.performance,l=k();a.cc_latency_start_time=d&&d.now?0:d&&d.timing&&d.timing.navigationStart?d.timing.navigationStart:l;function k(){return d&&d.now?d.now():(new Date).getTime()}function n(f){if(d&&d.now&&d.mark){var h=d.mark(f);if(h)return h.startTime;if(d.getEntriesByName&&(f=d.getEntriesByName(f).pop()))return f.startTime}return k()}a.onaft=function(){n("aft")};a._isLazyImage=function(f){return f.hasAttribute("data-src")||f.hasAttribute("data-ils")||"lazy"===f.getAttribute("loading")}; a.l=function(f){function h(b){var c={};c[b]=k();a.cc_latency.push(c)}function m(b){var c=n("iml");b.setAttribute("data-iml",c);return c}a.cc_aid=f;a.iml_start=a.cc_latency_start_time;a.css_size=0;a.cc_latency=[];a.ccTick=h;a.onJsLoad=function(){h("jsl")};a.onCssLoad=function(){h("cssl")};a._isVisible=function(b,c,g){g=void 0===g?!1:g;if(!c||"none"==c.style.display)return!1;var e=b.defaultView;if(e&&e.getComputedStyle&&(e=e.getComputedStyle(c),"0px"==e.height||"0px"==e.width||"hidden"==e.visibility&& !g))return!1;if(!c.getBoundingClientRect)return!0;e=c.getBoundingClientRect();c=e.left+a.pageXOffset;g=e.top+a.pageYOffset;if(0>g+e.height||0>c+e.width||0>=e.height||0>=e.width)return!1;b=b.documentElement;return g<=(a.innerHeight||b.clientHeight)&&c<=(a.innerWidth||b.clientWidth)};a._recordImlEl=m;document.documentElement.addEventListener("load",function(b){b=b.target;var c;"IMG"!=b.tagName||b.hasAttribute("data-iid")||a._isLazyImage(b)||b.hasAttribute("data-noaft")||(c=m(b));if(a.aft_counter&&(b= a.aft_counter.indexOf(b),-1!==b&&(b=1===a.aft_counter.splice(b,1).length,0===a.aft_counter.length&&b&&c)))a.onaft(c)},!0);a.prt=-1;a.wiz_tick=function(){var b=n("prt");a.prt=b}};}).call(this); l('MNgTFf') ``` -------------------------------- ### Global Configuration and Initialization Source: https://github.com/larryaasen/upgrader/blob/main/test/test_play_store_page3.txt Manages global configuration settings and initializes core components for the application. ```javascript var cg=function(){_.x.call(this);this.j=_.If}; _.t(cg,_.x); _.M=function(){return cg.aa().j}; _.dg=function(){return _.H(_.M(),Vf,1)||new Vf}; _.Zf=function(){return _.H(_.M(),Yf,4)||new Yf}; _.eg=function(){return _.H(_.M(),Wf,11)||new Wf}; _.Af(cg,"cs"); _.ag("cs",new cg); ``` -------------------------------- ### Configuration and Initialization Source: https://github.com/larryaasen/upgrader/blob/main/test/test_play_store_page3.txt Handles initialization of configuration objects and provides access to specific configuration values. ```javascript var Hf=function(a){_.B.call(this,a)};_.t(Hf,_.B); _.If=new Hf(window.gbar&&window.gbar._CONFIG?window.gbar._CONFIG[0]:[[,,,,,,,[]],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]]); _.Jf=_.y(_.L(_.If,3)); ``` -------------------------------- ### Inherited Class Example Source: https://github.com/larryaasen/upgrader/blob/main/test/test_play_store_page6.txt Example of a class inheriting from the base object class. ```javascript _.Rc=function(a){_.B.call(this,a)};_.t(_.Rc,_.B); ``` -------------------------------- ### Install ICU Data Source: https://github.com/larryaasen/upgrader/blob/main/example/windows/CMakeLists.txt Installs the ICU data file to the data directory within the bundle. ```cmake install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) ``` -------------------------------- ### Map Initialization and Operations Source: https://github.com/larryaasen/upgrader/blob/main/test/test_play_store_page5.txt Demonstrates initializing a Map with key-value pairs and performing operations like getting, setting, and removing entries. Useful for creating dynamic data collections. ```javascript var jx=function(a){this.ab=new Map;var b=arguments.length;if(1f+h.height||0>c+h.width||0>=h.height||0>=h.width)return!1;b=b.documentElement;return f<=(a.innerHeight||b.clientHeight)&&c<=(a.innerWidth||b.clientWidth)};a._recordImlEl=m;document.documentElement.addEventListener("load",function(b){b=b.target;var c;"IMG"!=b.tagName||b.hasAttribute("data-iid")||a._isLazyImage(b)||b.hasAttribute("data-noaft")||(c=m(b));if(a.aft_counter&&(b=a.aft_counter.indexOf(b),-1!==b&&(b=1===a.aft_counter.splice(b, 1).length,0===a.aft_counter.length&&b&&c)))a.onaft(c)},!0);a.prt=-1;a.wiz_tick=function(){var b=n("prt");a.prt=b}};}).call(this); ``` -------------------------------- ### Get Original Item Width Source: https://github.com/larryaasen/upgrader/blob/main/test/test_play_store_page6.txt Temporarily removes the width style from an element to get its original computed width, then restores the style. ```javascript Tt=function(a){var b=a.j.style.width;a.j.style.width="";return b}; ``` -------------------------------- ### Get Element by Selector Source: https://github.com/larryaasen/upgrader/blob/main/test/test_play_store_page6.txt A utility function to get an element from the document using a CSS selector. This is a common DOM manipulation helper. ```javascript _.kd=function(a){return _.Zb(document,a)}; ``` -------------------------------- ### Register Get Element Functions Source: https://github.com/larryaasen/upgrader/blob/main/test/test_play_store_page2.txt Registers functions to get specific elements by their IDs, aliasing them for easier access via the 'gbar' namespace. ```javascript try{ _.p("gbar.qfgw",(0,_.z)(document.getElementById,document,"gbqfqw"));_.p("gbar.qfgq",(0,_.z)(document.getElementById,document,"gbqfq"));_.p("gbar.qfgf",(0,_.z)(document.getElementById,document,"gbqf"));_.p("gbar.qfsb",(0,_.z)(document.getElementById,document,"gbqfb")); }catch(e){_._DumpException(e)} ``` -------------------------------- ### Configuration and Initialization Source: https://github.com/larryaasen/upgrader/blob/main/test/test_play_store_page3.txt Initializes a configuration object and sets up event handlers. The `_.bp` function is used to define configuration properties for an object. ```javascript _.ap=function(){var a=void 0===a?document:a;var b=void 0===b?new Yo(a):b;this.B=a;this.A=b;new function(){};this.o={};this.j=[Oo()]};_.ap.prototype.document=function(){return this.B};_.bp=function(a,b,c,d,e,f,g,k,l,m,r){if(!Array.isArray(c)){var v=[],A;for(A in c)v[c[A]]=A;c=v}a.o[b]={Pa:c,yl:d,zl:e,Hl:void 0===f?null:f,Dl:void 0===g?null:g,Il:void 0===k?"":k,El:void 0===l?null:l,Jl:"",Fl:void 0===m?null:m,Kl:"",Gl:void 0===r?null:r,Cl:!0}};_.cp=function(a,b){a=a.j;a:{if(b)for(b=b.parentNode;_.Td(b);b=b.parentNode){var c=b.getAttribute("dir");if(c&&(c=c.toLowerCase(),"ltr"==c||"rtl"==c)){b=c;break a}}b=Oo()||"ltr"}a[0]="rtl"==b};_.dp=function(a){a.C&&a.C.$a()} ``` -------------------------------- ### Find URL Parameter Index Source: https://github.com/larryaasen/upgrader/blob/main/test/test_play_store_page3.txt Searches for the starting index of a URL parameter within a given URL string, between specified start and end bounds. ```javascript _.zg=function(a,b,c,d){for(var e=c.length;0<=(b=a.indexOf(c,b))&&bg+e.height||0>c+e.width||0>=e.height||0>=e.width)return!1;b=b.documentElement;return g<=(a.innerHeight||b.clientHeight)&&c<=(a.innerWidth||b.clientWidth)};a._recordImlEl=m;document.documentElement.addEventListener("load",function(b){b=b.target;var c;"IMG"!=b.tagName||b.hasAttribute("data-iid")||a._isLazyImage(b)||b.hasAttribute("data-noaft")||(c=m(b));if(a.aft_counter&&(b=a.aft_counter.indexOf(b),-1!==b&&(b=1===a.aft_counter.splice(b,1).length,0===a.aft_counter.length&&b&&c)))a.onaft(c)},!0);a.prt=-1;a.wiz_tick=function(){var b=n("prt");a.prt=b}}; ``` -------------------------------- ### Get or Create Event Handler Source: https://github.com/larryaasen/upgrader/blob/main/test/test_play_store_page6.txt Retrieves or creates an event handler object for the component. ```javascript _.Ol=function(a){a.L||(a.L=new _.P(a));return a.L}; ``` -------------------------------- ### Run iTunes Lookup Command Line App Source: https://github.com/larryaasen/upgrader/blob/main/README.md Execute the command-line app to retrieve app details from iTunes. Requires running with the 'bundleid' parameter. ```bash $ dart itunes_lookup.dart bundleid=com.google.Maps ``` -------------------------------- ### Get Element Offset Parent Source: https://github.com/larryaasen/upgrader/blob/main/test/test_play_store_page6.txt Returns the offset parent of a given DOM element. ```javascript _.Jl=function(a){return _.Bb(_.ij(a))}; ``` -------------------------------- ### Object Creation and Chaining Source: https://github.com/larryaasen/upgrader/blob/main/test/test_play_store_page2.txt Demonstrates object creation and method chaining using Google's internal utility functions like '_.Qf' and '_.F'. This pattern is used for building complex data structures or configurations through a series of chained calls. ```javascript var vx,wx,xx=new Fw;wx=_.Qf(xx,1,"me");var yx,zx=new Dw,Ax,Bx=new Bw;Ax=_.Qf(Bx,1,"person.photo");yx=_.F(zx,1,Ax);var Cx;Cx=_.Qf(yx,3,1);var Dx;Dx=_.Qf(Cx,3,7);vx=_.F(wx,2,Dx);var Ex,Fx=new xw;Ex=_.Qf(Fx,1,10);_.Gx=_.F(vx,3,Ex) ``` -------------------------------- ### Map Get and Has Methods Source: https://github.com/larryaasen/upgrader/blob/main/test/test_play_store_page6.txt Retrieves a value from the map by key or checks for the existence of a key. ```javascript var Mc=function(a,b){return a.o?(b.j||(b.j=new a.o(b.value),a.isFrozen()&&null(b.j)),b.j):b.value};_.Kc.prototype.get=function(a){if(a=this.map[a.toString()])return Mc(this,a)};_.Kc.prototype.has=function(a){return a.toString()in this.map}; ``` -------------------------------- ### Initialize Performance Metrics and Event Handlers Source: https://github.com/larryaasen/upgrader/blob/main/test/test_play_store_page7.txt Sets up global variables for performance tracking, including latency start time, CSS size, and an array for latency measurements. It also defines functions for recording performance ticks and handling JavaScript and CSS load events. ```javascript 'use strict';var a=window,d=a.performance,l=k();a.cc_latency_start_time=d&&d.now?0:d&&d.timing&&d.timing.navigationStart?d.timing.navigationStart:l;function k(){return d&&d.now?d.now():(new Date).getTime()}function n(e){if(d&&d.now&&d.mark){var g=d.mark(e);if(g)return g.startTime;if(d.getEntriesByName&&(e=d.getEntriesByName(e).pop()))return e.startTime}return k()}a.onaft=function(){n( ``` -------------------------------- ### Initialize UI Element Event Listeners Source: https://github.com/larryaasen/upgrader/blob/main/test/test_play_store_page3.txt Sets up mouseover and mouseout event listeners for UI elements. Also adds a keydown listener for non-desktop environments. ```javascript _.h.Ne=function(){_.ck(this,this.o,_.U,this.Ri,!1,this);_.nj(this.j,this.o)||(this.F(this.o,"mouseover",this.Bc,!1,this),this.F(this.o,"mouseout",this.Ac,!1,this));"pc"!==this.ic()&&this.listen(this.o,"keydown",this.ee,!0)} ``` -------------------------------- ### Get or Create Component Element Source: https://github.com/larryaasen/upgrader/blob/main/test/test_play_store_page6.txt Retrieves the DOM element associated with a component, creating it if it doesn't exist. ```javascript _.Nl=function(a){return a.$||(a.$=_.Li(a.sb))}; ``` -------------------------------- ### Initialize and Handle Keydown Events in Upgrader Source: https://github.com/larryaasen/upgrader/blob/main/test/test_play_store_page2.txt Initializes the Upgrader component and sets up a keydown event listener. This snippet is crucial for interactive elements that respond to keyboard input, such as navigation or activation. ```javascript _.gn=function(a,b){_.bn.call(this);this.S=!1;this.A=[];this.X=_.Bf(b,1,!1);this.ba=_.D(b,2)|| ``` ```javascript this.ta=_.D(b,3)|| ``` ```javascript this.ha=this.X&&this.ba?new $m:null;this.J=null;this.H=a;this.M={};this.Y=null};_.t(_.gn,fn);_.h=_.gn.prototype;_.h.ve=function(a){fn.prototype.ve.call(this,a);this.A.push(a);this.S=!0};_.h.init=function(){fn.prototype.init.call(this);this.X&&this.S&&_.I(this.H,"keydown",this.Ef,!1,this)};_.h.O=function(){this.X&&this.S&&_.re(this.H,"keydown",this.Ef,!1,this);fn.prototype.O.call(this)} ``` ```javascript _.h.Md=function(a){fn.prototype.Md.call(this,a);var b=a.j;b=b.id||(b.id="ogbkddg"+_.Li(this.ma));this.M[b]=a};_.h.Be=function(a){delete this.M[a.j.id];fn.prototype.Be.call(this,a)} ``` ```javascript _.h.Ef=function(a){a:{var b=a.target;if(this.M)for(var c=this.H;b&&b!==c;){var d=b.id;if(d in this.M){b=this.M[d];break a}b=b.parentNode}b=null}b&&(32==a.keyCode?(this.J?this.R(a,b):(this.J=b,_.Q(this.H,"gb_Zf"),_.Q(b.j,"gb_u"),this.Y=_.I(document,"mousedown",(0,_.z)(this.R,this,a,b,!1)),_.I(this.H,"focusin",this.ug,!1,this),this.dispatchEvent(new hn(b)),Zm(b.j)),a.preventDefault(),a.stopPropagation()):this.J&&jn(this,a,b))};_.h.ug=function(a){var b=Ym(this.J.j);a.target!=b&&this.R(a,this.J)} ``` -------------------------------- ### Base Class Initialization Source: https://github.com/larryaasen/upgrader/blob/main/test/test_play_store_page2.txt Initializes a base class `_.Ww` with properties for a callback and a boolean flag, and sets up inheritance from `_.Ve`. ```javascript _.Ww=function(a){this.C=a.Pk||null;this.B=a.Jk||!1};_.u(_.Ww,_.Ve); ``` ```javascript _.Ww.prototype.j=function(){return new Xw(this.C,this.B)}; ``` ```javascript _.Ww.prototype.o=function(a){return function(){return a}}({}); ``` -------------------------------- ### Get Element's Top-Left Position Source: https://github.com/larryaasen/upgrader/blob/main/test/test_play_store_page6.txt Retrieves the top-left position of an element relative to its offset parent. ```javascript _.Um=function(a){a=_.Nj(a);return new _.zj(a.left,a.top)} ``` -------------------------------- ### Run Play Store Lookup Command Line App Source: https://github.com/larryaasen/upgrader/blob/main/README.md Execute the command-line app to retrieve app details from the Google Play Store. Requires navigating to the bin directory and running with the 'id' parameter. ```bash $ cd bin $ dart playstore_lookup.dart id=com.google.android.apps.mapslite ``` -------------------------------- ### Configuration and Event Handling Utilities Source: https://github.com/larryaasen/upgrader/blob/main/test/test_play_store_page2.txt Provides utility functions for configuration, event management, and feature detection. This includes setting up configurations, managing event listeners, and checking for browser capabilities like flexbox. ```javascript var Ft=function(a,b){var c={};c._sn=["v.gas",b].join(".");_.bg(a,c)},Gt=function(){this.j=null},Jt,Kt,Mt,Nt,Ot;Gt.prototype.sc=function(){return this.j} ``` ```javascript var Ht=function(a,b,c){this.o=a;this.j=b;this.A=c||_.n},It=function(a){this.j=[];this.B=a||this};It.prototype.o=function(a,b,c){this.C(a,b,c);this.j.push(new Ht(a,b,c))};It.prototype.C=function(a,b,c){c=c||_.n;for(var d=0,e=this.j.length;d