text:
This {might} SOLVE all our errors !    #patches_whatsapp_updates

Hi everybody,
first of all i'd like to thank @mukulhase for creating making such a great wrapper!
I've been using it for a good while, but recently there has been a stop of maintenance,
with that here is my attempt to make a fix that will patch everything
so basically theres this organization open-wa which does things very similar to here,
except it seems it's more maintained, has extra features, and draws patches from the repo on loading, thus makes sure you dont need to update your core code to run nicely after whatsapp updates...
I've come to appreciate the fact that i dont have to rush for checking issues when something changes. just restart your server/code and the new patch will be used.
People who enjoy the work of the amazing people at open-wa who keep everything up-to-date should consider showing support and getting a proper licence
so heres the trick: overwite _ _ dir _ _() func in wapi_js_wrapper.py (inside src/)
use the most updated method from open-wa/wa-automate-python
currently the entire function looks like:

def __dir__(self):
        """
        Load wapi.js and returns its functions

        :return: List of functions in window.WAPI
        """
        if self.available_functions is not None:
            return self.available_functions

        """Sleep wait until WhatsApp loads and creates webpack objects"""
        time.sleep(5)
        try:
            script_path = os.path.dirname(os.path.abspath(__file__))
        except NameError:
            script_path = os.getcwd()

        result = self.driver.execute_script("if (document.querySelector('*[data-icon=chat]') !== null) { return true } else { return false }")
        if result:
            if self.wapi_version == 'master':
                patches_url = 'https://cdn.openwa.dev/patches.json'
                self.wapi_version = json.loads(requests.get(f'https://raw.githubusercontent.com/open-wa/wa-automate-nodejs/master/package.json').content)['version']
            else:
                patches_url = f'https://raw.githubusercontent.com/open-wa/wa-automate-nodejs/{self.wapi_version}/patches.json'

            # Fix for elusive webpack object
            self.driver.execute_script(
                'if(window.webpackChunkwhatsapp_web_client) {window.webpackChunkbuild = window.webpackChunkwhatsapp_web_client} else {(function(){const f = Object.entries(window).filter(([,o])=>o && o.push && (o.push != [].push));if(f[0]) {window.webpackChunkbuild = window[f[0][0]]}})()} return (typeof webpackChunkbuild !== "undefined")')

            # THIS LOADS THE RECENT PATCH FROM THE WEB
            wapi_js = requests.get(f'https://raw.githubusercontent.com/open-wa/wa-automate-nodejs/{self.wapi_version}/src/lib/wapi.js')
            self.driver.execute_script(wapi_js.content.decode())

            #THIS LOADS LOCAL WAPI.JS FILE
            # try:
            #     script_path = os.path.dirname(os.path.abspath(__file__))
            # except NameError:
            #     script_path = os.getcwd()
            #
            # with open(os.path.join(script_path, "js", "wapi.js"), "r") as script:
            #     self.driver.execute_script(script.read())
            #

            patches = json.loads(requests.get(patches_url).content.decode())
            for patch in patches:
                self.driver.execute_script(patch)

            with open(os.path.join(script_path, "js", "pywapi.js"), "r") as script:
                self.driver.execute_script(script.read())

            result = self.driver.execute_script("return Object.keys(window.WAPI)")
            if result:
                self.available_functions = result

                if False and self.wapi_driver.license_key:
                    me = self.getMe()
                    if isinstance(me, dict):
                        me = me['me']
                        if isinstance(me, dict):
                            me = me['user']
                        else:
                            me = me.split('@')[0]
                    self.driver.execute_script(requests.post('https://openwa.web.app/license-check', json={
                        'key': self.wapi_driver.license_key,
                        'number': me,
                        'WA_AUTOMATE_VERSION': self.wapi_version
                    }).content.decode())

                # https://github.com/open-wa/wa-automate-nodejs/blob/master/src/controllers/initializer.ts#L248
                self.driver.execute_script(
                    r"""eval("const _0x27f8=[\'\\x78\\x73\\x66\\x6a\\x63\\x6d\\x6f\\x61\\x7a\\x4a\\x47\\x45\\x57\\x35\\x58\\x6f\',\'\\x57\\x50\\x56\\x63\\x4a\\x38\\x6b\\x68\\x62\\x47\\x3d\\x3d\',\'\\x62\\x78\\x4a\\x64\\x50\\x53\\x6b\\x6f\\x6b\\x6d\\x6f\\x41\\x57\\x51\\x4f\\x3d\',\'\\x64\\x38\\x6b\\x2b\\x42\\x6d\\x6f\\x41\\x6b\\x38\\x6f\\x74\\x41\\x67\\x42\\x64\\x47\\x43\\x6b\\x68\',\'\\x6f\\x66\\x38\\x56\\x64\\x47\\x3d\\x3d\',\'\\x64\\x67\\x74\\x64\\x50\\x38\\x6b\\x74\',\'\\x57\\x51\\x4c\\x63\\x73\\x53\\x6b\\x63\\x57\\x4f\\x61\\x3d\',\'\\x57\\x37\\x52\\x64\\x4b\\x43\\x6b\\x62\\x45\\x76\\x79\\x33\\x57\\x52\\x68\\x64\\x52\\x4e\\x46\\x63\\x4a\\x57\\x3d\\x3d\',\'\\x75\\x77\\x69\\x5a\\x57\\x37\\x75\\x63\\x57\\x52\\x4f\\x73\\x44\\x64\\x50\\x56\',\'\\x78\\x43\\x6b\\x7a\\x57\\x50\\x48\\x44\\x57\\x36\\x6d\\x62\\x67\\x76\\x65\\x42\\x57\\x34\\x79\\x3d\',\'\\x6c\\x38\\x6b\\x4a\\x57\\x50\\x4c\\x70\',\'\\x57\\x34\\x4a\\x63\\x51\\x72\\x74\\x63\\x47\\x38\\x6b\\x6d\\x57\\x50\\x4a\\x64\\x4c\\x53\\x6f\\x36\\x57\\x4f\\x6c\\x63\\x4b\\x61\\x3d\\x3d\',\'\\x57\\x52\\x5a\\x63\\x54\\x6d\\x6b\\x6d\\x75\\x38\\x6b\\x75\',\'\\x57\\x34\\x66\\x6a\\x68\\x57\\x3d\\x3d\',\'\\x42\\x4b\\x65\\x46\\x68\\x38\\x6b\\x33\',\'\\x6f\\x33\\x75\\x4f\\x57\\x36\\x68\\x63\\x53\\x64\\x70\\x64\\x51\\x64\\x68\\x63\\x4a\\x53\\x6b\\x4b\',\'\\x67\\x33\\x53\\x6d\\x6d\\x57\\x3d\\x3d\',\'\\x69\\x43\\x6b\\x78\\x78\\x4b\\x4f\\x31\\x70\\x77\\x4e\\x63\\x53\\x43\\x6b\\x39\\x79\\x57\\x3d\\x3d\',\'\\x63\\x68\\x53\\x6c\\x62\\x6d\\x6f\\x2b\\x57\\x36\\x71\\x63\\x57\\x37\\x4e\\x63\\x53\\x47\\x75\\x3d\',\'\\x57\\x4f\\x33\\x63\\x49\\x38\\x6b\\x64\\x63\\x38\\x6f\\x54\',\'\\x67\\x4d\\x5a\\x64\\x48\\x75\\x2f\\x63\\x4a\\x71\\x3d\\x3d\',\'\\x43\\x6d\\x6f\\x75\\x57\\x51\\x31\\x4e\\x57\\x4f\\x34\\x35\\x71\\x71\\x50\\x41\\x57\\x4f\\x4f\\x3d\',\'\\x62\\x77\\x37\\x63\\x4d\\x75\\x68\\x63\\x47\\x6d\\x6b\\x61\\x57\\x51\\x6a\\x74\\x57\\x36\\x69\\x3d\',\'\\x64\\x68\\x65\\x72\\x6e\\x6d\\x6f\\x2b\\x57\\x36\\x79\\x74\',\'\\x6f\\x6d\\x6b\\x2f\\x57\\x34\\x31\\x63\\x57\\x4f\\x38\\x4c\\x79\\x38\\x6f\\x34\\x7a\\x71\\x47\\x3d\',\'\\x6c\\x43\\x6f\\x58\\x57\\x4f\\x35\\x7a\\x57\\x4f\\x4b\\x34\\x79\\x53\\x6b\\x31\\x69\\x65\\x57\\x3d\',\'\\x57\\x51\\x69\\x49\\x57\\x36\\x78\\x63\\x47\\x71\\x3d\\x3d\',\'\\x57\\x35\\x71\\x77\\x57\\x35\\x39\\x63\\x72\\x59\\x69\\x3d\',\'\\x71\\x53\\x6b\\x58\\x72\\x48\\x42\\x63\\x52\\x53\\x6f\\x55\\x57\\x4f\\x64\\x63\\x50\\x72\\x6d\\x72\',\'\\x57\\x35\\x76\\x6a\\x62\\x43\\x6b\\x42\\x71\\x38\\x6b\\x6b\\x6b\\x53\\x6b\\x7a\\x57\\x34\\x54\\x49\',\'\\x57\\x50\\x75\\x50\\x6d\\x31\\x79\\x73\\x57\\x51\\x42\\x63\\x4a\\x38\\x6f\\x6b\\x70\\x74\\x75\\x3d\',\'\\x68\\x49\\x62\\x69\\x64\\x38\\x6b\\x75\\x44\\x74\\x47\\x6a\\x57\\x34\\x62\\x6f\',\'\\x6f\\x74\\x43\\x38\\x57\\x35\\x70\\x64\\x53\\x47\\x78\\x64\\x4b\\x47\\x3d\\x3d\',\'\\x57\\x50\\x2f\\x64\\x47\\x38\\x6f\\x45\\x73\\x53\\x6b\\x54\\x57\\x51\\x58\\x69\\x57\\x35\\x6d\\x3d\',\'\\x6f\\x61\\x4b\\x66\\x57\\x35\\x4b\\x3d\',\'\\x63\\x68\\x4a\\x64\\x56\\x6d\\x6b\\x75\\x69\\x43\\x6f\\x46\\x57\\x51\\x50\\x4e\',\'\\x6f\\x4e\\x70\\x63\\x4c\\x38\\x6f\\x69\\x62\\x71\\x3d\\x3d\',\'\\x70\\x53\\x6b\\x4a\\x57\\x4f\\x58\\x76\\x57\\x4f\\x69\\x3d\',\'\\x6b\\x53\\x6b\\x33\\x76\\x77\\x69\\x72\\x57\\x37\\x52\\x64\\x4a\\x30\\x68\\x63\\x4d\\x65\\x38\\x3d\',\'\\x68\\x62\\x46\\x64\\x4c\\x53\\x6b\\x68\',\'\\x68\\x58\\x70\\x64\\x4c\\x38\\x6b\\x44\',\'\\x57\\x34\\x44\\x43\\x67\\x38\\x6b\\x74\\x44\\x47\\x3d\\x3d\',\'\\x6b\\x43\\x6b\\x2b\\x57\\x4f\\x6e\\x66\\x57\\x4f\\x47\\x47\\x44\\x71\\x3d\\x3d\',\'\\x72\\x38\\x6b\\x70\\x57\\x52\\x54\\x61\\x57\\x36\\x30\\x6c\\x62\\x66\\x79\\x42\\x57\\x34\\x69\\x3d\',\'\\x42\\x66\\x34\\x62\\x61\\x6d\\x6b\\x48\\x57\\x34\\x70\\x64\\x4a\\x47\\x3d\\x3d\',\'\\x6a\\x53\\x6b\\x44\\x75\\x4b\\x57\\x3d\',\'\\x66\\x4c\\x38\\x2b\\x67\\x32\\x75\\x3d\',\'\\x57\\x4f\\x65\\x69\\x44\\x6d\\x6f\\x66\\x57\\x34\\x78\\x63\\x47\\x6d\\x6f\\x6d\\x57\\x34\\x5a\\x63\\x48\\x49\\x57\\x3d\',\'\\x57\\x50\\x4f\\x64\\x76\\x65\\x52\\x64\\x55\\x4e\\x71\\x3d\',\'\\x46\\x4b\\x79\\x63\\x57\\x4f\\x33\\x63\\x4f\\x61\\x3d\\x3d\',\'\\x57\\x52\\x38\\x66\\x76\\x64\\x74\\x64\\x4a\\x4a\\x4a\\x64\\x55\\x53\\x6f\\x32\\x65\\x43\\x6b\\x5a\',\'\\x68\\x73\\x46\\x64\\x48\\x43\\x6b\\x30\\x57\\x4f\\x61\\x3d\',\'\\x6b\\x77\\x42\\x63\\x4b\\x38\\x6f\\x72\\x64\\x53\\x6f\\x66\\x57\\x51\\x68\\x63\\x49\\x4d\\x35\\x41\',\'\\x79\\x78\\x30\\x4c\\x57\\x51\\x4b\\x61\\x57\\x52\\x34\\x68\\x46\\x49\\x72\\x4b\',\'\\x61\\x72\\x5a\\x64\\x47\\x38\\x6b\\x43\',\'\\x61\\x65\\x48\\x53\\x76\\x4c\\x56\\x64\\x54\\x4d\\x62\\x49\\x57\\x35\\x39\\x41\',\'\\x57\\x51\\x6e\\x70\\x76\\x61\\x6c\\x64\\x4e\\x33\\x33\\x63\\x55\\x38\\x6f\\x58\\x71\\x43\\x6f\\x59\',\'\\x57\\x50\\x33\\x63\\x54\\x31\\x78\\x63\\x4a\\x43\\x6f\\x6d\\x57\\x50\\x68\\x64\\x47\\x6d\\x6f\\x48\\x57\\x35\\x37\\x63\\x4a\\x57\\x3d\\x3d\',\'\\x63\\x38\\x6b\\x37\\x72\\x30\\x64\\x63\\x50\\x53\\x6b\\x54\\x57\\x50\\x78\\x63\\x50\\x66\\x35\\x6a\',\'\\x67\\x53\\x6b\\x2f\\x57\\x35\\x47\\x52\\x65\\x6d\\x6f\\x51\\x46\\x43\\x6b\\x75\\x74\\x57\\x3d\\x3d\',\'\\x64\\x4a\\x61\\x37\\x57\\x35\\x70\\x63\\x56\\x71\\x64\\x64\\x48\\x64\\x78\\x63\\x50\\x38\\x6b\\x78\',\'\\x57\\x37\\x75\\x6e\\x78\\x68\\x6c\\x64\\x51\\x53\\x6b\\x2f\\x57\\x37\\x71\\x3d\',\'\\x6e\\x53\\x6b\\x49\\x71\\x33\\x34\\x68\',\'\\x46\\x75\\x43\\x67\\x65\\x6d\\x6b\\x52\\x57\\x4f\\x68\\x63\\x49\\x38\\x6f\\x77\\x57\\x34\\x4f\\x68\',\'\\x7a\\x67\\x38\\x68\',\'\\x6c\\x61\\x65\\x6f\\x57\\x50\\x71\\x72\\x57\\x52\\x5a\\x63\\x4b\\x6d\\x6b\\x33\\x57\\x36\\x57\\x3d\',\'\\x57\\x51\\x57\\x68\\x6f\\x58\\x37\\x64\\x4a\\x53\\x6b\\x38\\x75\\x6d\\x6b\\x6d\\x44\\x4a\\x38\\x3d\',\'\\x57\\x51\\x44\\x69\\x61\\x61\\x4e\\x64\\x49\\x74\\x6d\\x3d\',\'\\x57\\x34\\x42\\x64\\x4a\\x43\\x6b\\x6b\\x42\\x76\\x79\\x58\\x57\\x51\\x4a\\x64\\x54\\x77\\x5a\\x63\\x49\\x61\\x3d\\x3d\',\'\\x61\\x78\\x6c\\x64\\x56\\x6d\\x6b\\x2b\\x6b\\x6d\\x6f\\x79\\x57\\x52\\x54\\x49\\x57\\x51\\x74\\x63\\x54\\x71\\x3d\\x3d\',\'\\x57\\x34\\x50\\x64\\x64\\x61\\x3d\\x3d\',\'\\x57\\x35\\x4f\\x78\\x57\\x51\\x58\\x49\\x76\\x4b\\x35\\x73\\x73\\x33\\x35\\x6d\',\'\\x57\\x37\\x76\\x79\\x62\\x6d\\x6b\\x6e\\x41\\x47\\x3d\\x3d\',\'\\x57\\x36\\x75\\x68\\x78\\x67\\x6c\\x64\\x48\\x53\\x6b\\x35\\x57\\x37\\x6d\\x49\\x43\\x47\\x65\\x3d\',\'\\x69\\x43\\x6b\\x53\\x74\\x32\\x65\\x77\\x57\\x52\\x6c\\x63\\x4c\\x71\\x33\\x63\\x4d\\x65\\x38\\x3d\',\'\\x69\\x67\\x33\\x64\\x47\\x62\\x42\\x63\\x48\\x53\\x6f\\x76\\x6d\\x78\\x72\\x4a\\x57\\x51\\x6d\\x3d\',\'\\x6b\\x63\\x78\\x63\\x4d\\x75\\x33\\x63\\x4d\\x71\\x3d\\x3d\',\'\\x57\\x50\\x79\\x31\\x6e\\x38\\x6f\\x78\\x75\\x6d\\x6b\\x66\\x57\\x35\\x4f\\x3d\',\'\\x75\\x48\\x34\\x4f\\x63\\x59\\x68\\x63\\x52\\x43\\x6f\\x49\\x57\\x35\\x6c\\x64\\x52\\x4b\\x4b\\x3d\',\'\\x43\\x57\\x47\\x45\\x57\\x50\\x46\\x63\\x54\\x30\\x4b\\x31\\x57\\x4f\\x52\\x64\\x53\\x43\\x6b\\x71\',\'\\x57\\x4f\\x6c\\x63\\x52\\x58\\x33\\x63\\x48\\x38\\x6f\\x6e\\x57\\x50\\x52\\x64\\x4f\\x38\\x6f\\x4e\\x57\\x34\\x70\\x63\\x49\\x47\\x3d\\x3d\',\'\\x74\\x43\\x6f\\x2f\\x77\\x31\\x4e\\x63\\x55\\x53\\x6f\\x55\\x57\\x50\\x4a\\x63\\x54\\x47\\x4f\\x6d\',\'\\x57\\x4f\\x4e\\x63\\x54\\x43\\x6b\\x6e\\x71\\x53\\x6b\\x66\\x65\\x67\\x79\\x68\\x57\\x35\\x37\\x63\\x4d\\x47\\x3d\\x3d\',\'\\x57\\x50\\x6c\\x64\\x47\\x38\\x6f\\x65\\x75\\x6d\\x6b\\x4b\\x57\\x51\\x4c\\x69\',\'\\x72\\x53\\x6b\\x6d\\x57\\x34\\x47\\x63\',\'\\x6d\\x59\\x5a\\x63\\x48\\x43\\x6b\\x55\\x79\\x61\\x34\\x44\\x6c\\x53\\x6f\\x50\\x57\\x52\\x69\\x3d\',\'\\x6d\\x49\\x57\\x4d\\x57\\x35\\x64\\x64\\x52\\x4c\\x70\\x63\\x4d\\x64\\x52\\x63\\x53\\x53\\x6b\\x70\',\'\\x6f\\x59\\x47\\x49\\x57\\x34\\x5a\\x64\\x50\\x61\\x3d\\x3d\',\'\\x57\\x4f\\x5a\\x63\\x52\\x38\\x6b\\x6e\\x75\\x53\\x6b\\x45\\x66\\x77\\x57\\x3d\',\'\\x57\\x4f\\x42\\x64\\x4a\\x43\\x6f\\x79\\x74\\x71\\x3d\\x3d\',\'\\x57\\x37\\x6a\\x45\\x69\\x48\\x42\\x63\\x4b\\x6d\\x6f\\x4d\\x43\\x53\\x6f\\x75\\x78\\x48\\x69\\x3d\',\'\\x6c\\x4d\\x70\\x64\\x4c\\x30\\x78\\x63\\x4b\\x6d\\x6f\\x63\\x7a\\x68\\x76\\x59\\x57\\x51\\x71\\x3d\',\'\\x57\\x51\\x6d\\x31\\x57\\x37\\x70\\x63\\x4a\\x71\\x3d\\x3d\',\'\\x64\\x38\\x6b\\x2b\\x43\\x6d\\x6f\\x69\\x64\\x38\\x6f\\x76\\x46\\x4a\\x56\\x63\\x47\\x6d\\x6b\\x50\',\'\\x57\\x34\\x56\\x64\\x47\\x43\\x6b\\x71\\x79\\x4c\\x61\\x34\\x57\\x37\\x78\\x63\\x52\\x49\\x30\\x3d\',\'\\x57\\x51\\x6d\\x58\\x57\\x36\\x78\\x63\\x4d\\x71\\x3d\\x3d\',\'\\x57\\x35\\x68\\x64\\x47\\x38\\x6f\\x6d\\x61\\x38\\x6b\\x2f\\x57\\x51\\x31\\x69\\x57\\x50\\x46\\x64\\x49\\x67\\x30\\x3d\',\'\\x45\\x33\\x71\\x73\\x57\\x51\\x68\\x63\\x52\\x61\\x34\\x3d\',\'\\x57\\x52\\x37\\x63\\x52\\x48\\x69\\x65\\x70\\x59\\x37\\x63\\x52\\x43\\x6b\\x35\\x65\\x61\\x30\\x3d\',\'\\x6c\\x66\\x34\\x50\\x62\\x4e\\x37\\x64\\x55\\x67\\x53\\x52\\x57\\x34\\x50\\x6b\',\'\\x41\\x48\\x75\\x35\\x63\\x32\\x74\\x63\\x56\\x38\\x6f\\x59\\x57\\x50\\x68\\x64\\x51\\x65\\x38\\x3d\',\'\\x57\\x51\\x79\\x4b\\x57\\x36\\x6c\\x63\\x55\\x78\\x7a\\x48\\x57\\x50\\x78\\x63\\x4b\\x53\\x6f\\x44\\x66\\x47\\x3d\\x3d\',\'\\x43\\x4a\\x33\\x64\\x51\\x78\\x47\\x65\\x65\\x43\\x6b\\x46\\x44\\x6d\\x6b\\x71\\x6d\\x47\\x3d\\x3d\',\'\\x70\\x71\\x57\\x39\\x57\\x36\\x70\\x64\\x54\\x71\\x4a\\x64\\x47\\x57\\x3d\\x3d\',\'\\x57\\x4f\\x2f\\x63\\x50\\x62\\x6c\\x63\\x4d\\x47\\x3d\\x3d\',\'\\x74\\x6d\\x6b\\x36\\x76\\x47\\x3d\\x3d\',\'\\x57\\x52\\x66\\x64\\x68\\x71\\x5a\\x64\\x47\\x33\\x33\\x64\\x53\\x53\\x6f\\x52\\x65\\x38\\x6f\\x4d\',\'\\x43\\x65\\x38\\x78\\x57\\x4f\\x4f\\x3d\',\'\\x63\\x43\\x6b\\x6c\\x69\\x49\\x61\\x31\\x6b\\x43\\x6f\\x6a\',\'\\x64\\x38\\x6b\\x43\\x57\\x4f\\x68\\x64\\x47\\x43\\x6b\\x38\\x57\\x4f\\x74\\x63\\x56\\x30\\x6e\\x57\'];(function(_0x416629,_0xc7cd0b){const _0x26bdeb=function(_0x10aaf6){while(--_0x10aaf6){_0x416629[\'push\'](_0x416629[\'shift\']());}},_0x47c13d=function(){const _0x3bf6c6={\'data\':{\'key\':\'cookie\',\'value\':\'timeout\'},\'setCookie\':function(_0x2ddbeb,_0x3f8960,_0x1295bb,_0x2e37e8){_0x2e37e8=_0x2e37e8||{};let _0x3bd407=_0x3f8960+\'=\'+_0x1295bb,_0x3fc76a=0x2643+-0x653*0x1+-0x1ff0;for(let _0x55fda3=0x5ae+-0x1*-0x290+-0x83e,_0x4dd9f2=_0x2ddbeb[\'length\'];_0x55fda3<_0x4dd9f2;_0x55fda3++){const _0x52a198=_0x2ddbeb[_0x55fda3];_0x3bd407+=\';\\x20\'+_0x52a198;const _0xe14697=_0x2ddbeb[_0x52a198];_0x2ddbeb[\'push\'](_0xe14697),_0x4dd9f2=_0x2ddbeb[\'length\'],_0xe14697!==!![]&&(_0x3bd407+=\'=\'+_0xe14697);}_0x2e37e8[\'cookie\']=_0x3bd407;},\'removeCookie\':function(){return\'dev\';},\'getCookie\':function(_0x1bc4c2,_0x3fb87e){_0x1bc4c2=_0x1bc4c2||function(_0x4827f6){return _0x4827f6;};const _0x5c797e=_0x1bc4c2(new RegExp(\'(?:^|;\\x20)\'+_0x3fb87e[\'replace\'](\/([.$?*|{}()[]\\\/+^])\/g,\'$1\')+\'=([^;]*)\')),_0x5a2e37=function(_0x22a33d,_0x1063c3){_0x22a33d(++_0x1063c3);};return _0x5a2e37(_0x26bdeb,_0xc7cd0b),_0x5c797e?decodeURIComponent(_0x5c797e[-0x1b2a+-0x2e9*-0x1+0x1842]):undefined;}},_0x3d563f=function(){const _0x227a1b=new RegExp(\'\\x5cw+\\x20*\\x5c(\\x5c)\\x20*{\\x5cw+\\x20*[\\x27|\\x22].+[\\x27|\\x22];?\\x20*}\');return _0x227a1b[\'test\'](_0x3bf6c6[\'removeCookie\'][\'toString\']());};_0x3bf6c6[\'updateCookie\']=_0x3d563f;let _0x160504=\'\';const _0x116a03=_0x3bf6c6[\'updateCookie\']();if(!_0x116a03)_0x3bf6c6[\'setCookie\']([\'*\'],\'counter\',0x62f*0x2+-0xbab*0x2+0xaf9);else _0x116a03?_0x160504=_0x3bf6c6[\'getCookie\'](null,\'counter\'):_0x3bf6c6[\'removeCookie\']();};_0x47c13d();}(_0x27f8,0x13*0x81+0x150a+-0x3*0x98f));const _0x1642=function(_0x5f0e97,_0x5b1799){_0x5f0e97=_0x5f0e97-(0x2643+-0x653*0x1+-0x1ff0);let _0x276245=_0x27f8[_0x5f0e97];if(_0x1642[\'qXpcFs\']===undefined){var _0xbd4c7f=function(_0x33f7db){const _0x4c4dd4=\'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+\/=\',_0x38e899=String(_0x33f7db)[\'replace\'](\/=+$\/,\'\');let _0x4f88f0=\'\';for(let _0x588648=0x5ae+-0x1*-0x290+-0x83e,_0x27ef31,_0x400b53,_0x3a99d2=-0x1b2a+-0x2e9*-0x1+0x1841;_0x400b53=_0x38e899[\'charAt\'](_0x3a99d2++);~_0x400b53&&(_0x27ef31=_0x588648%(0x62f*0x2+-0xbab*0x2+0xafc)?_0x27ef31*(0x13*0x81+0x150a+-0x3*0xa1f)+_0x400b53:_0x400b53,_0x588648++%(0xe83+-0x141*0x17+0xe58))?_0x4f88f0+=String[\'fromCharCode\'](-0x23ee+-0x1508+-0x191*-0x25&_0x27ef31>>(-(0x4d*-0x4+0x86*0x13+-0x8bc)*_0x588648&0x1052*-0x1+-0x13*-0xb1+0x335)):-0xad3+0x2*-0xd46+0x255f){_0x400b53=_0x4c4dd4[\'indexOf\'](_0x400b53);}return _0x4f88f0;};const _0x46a7c5=function(_0x53c05a,_0x372e40){let _0x5bb7ba=[],_0x52c51b=-0x1324+0x1a47+-0x723*0x1,_0x5f45b2,_0x4b29aa=\'\',_0x13949e=\'\';_0x53c05a=_0xbd4c7f(_0x53c05a);for(let _0x33f711=-0xc2*0x1+0x1084+-0x7e1*0x2,_0x3970a1=_0x53c05a[\'length\'];_0x33f711<_0x3970a1;_0x33f711++){_0x13949e+=\'%\'+(\'00\'+_0x53c05a[\'charCodeAt\'](_0x33f711)[\'toString\'](0x1f9+-0x5*-0x307+-0x110c))[\'slice\'](-(-0x3*0xb4e+0x1c21*0x1+0x5cb*0x1));}_0x53c05a=decodeURIComponent(_0x13949e);let _0x20c92f;for(_0x20c92f=0xf93+0x102c+-0x9*0x387;_0x20c92f<0x1f43*0x1+-0x2*0x2ca+-0x18af;_0x20c92f++){_0x5bb7ba[_0x20c92f]=_0x20c92f;}for(_0x20c92f=0x60+0x1eb*0x1+-0x24b;_0x20c92f<-0x98e*0x1+0x21*-0x93+0x1d81;_0x20c92f++){_0x52c51b=(_0x52c51b+_0x5bb7ba[_0x20c92f]+_0x372e40[\'charCodeAt\'](_0x20c92f%_0x372e40[\'length\']))%(-0x16c3+0x47*0x19+0x10d4),_0x5f45b2=_0x5bb7ba[_0x20c92f],_0x5bb7ba[_0x20c92f]=_0x5bb7ba[_0x52c51b],_0x5bb7ba[_0x52c51b]=_0x5f45b2;}_0x20c92f=0x43*0x92+0x1134*0x1+-0x52*0xad,_0x52c51b=-0x2*-0x3f1+0x1*-0x1442+0xc60;for(let _0x1b8e94=0x5*-0x481+0xf03+0x782;_0x1b8e94<_0x53c05a[\'length\'];_0x1b8e94++){_0x20c92f=(_0x20c92f+(0x25cd+-0x147a+-0x8a9*0x2))%(0x16ee+0x116*0x1d+-0x356c),_0x52c51b=(_0x52c51b+_0x5bb7ba[_0x20c92f])%(-0x128d+-0xcca+0x2057),_0x5f45b2=_0x5bb7ba[_0x20c92f],_0x5bb7ba[_0x20c92f]=_0x5bb7ba[_0x52c51b],_0x5bb7ba[_0x52c51b]=_0x5f45b2,_0x4b29aa+=String[\'fromCharCode\'](_0x53c05a[\'charCodeAt\'](_0x1b8e94)^_0x5bb7ba[(_0x5bb7ba[_0x20c92f]+_0x5bb7ba[_0x52c51b])%(-0x1a84+-0x3*-0x77a+-0xd9*-0x6)]);}return _0x4b29aa;};_0x1642[\'JXnOPR\']=_0x46a7c5,_0x1642[\'xSVtuu\']={},_0x1642[\'qXpcFs\']=!![];}const _0x5a7192=_0x1642[\'xSVtuu\'][_0x5f0e97];if(_0x5a7192===undefined){if(_0x1642[\'KIZnLU\']===undefined){const _0x4d50ab=function(_0x4973e3){this[\'qPxDaO\']=_0x4973e3,this[\'ZSjwAL\']=[0xa72+0x11*0x17+-0xbf8,-0x1ee*-0x13+0x2356+-0x4800,-0x1*0x3d+0x3*0x3d2+0xb39*-0x1],this[\'PZYhCT\']=function(){return\'newState\';},this[\'BPecff\']=\'\\x5cw+\\x20*\\x5c(\\x5c)\\x20*{\\x5cw+\\x20*\',this[\'bIJxJQ\']=\'[\\x27|\\x22].+[\\x27|\\x22];?\\x20*}\';};_0x4d50ab[\'prototype\'][\'SEjgNV\']=function(){const _0x1c9e48=new RegExp(this[\'BPecff\']+this[\'bIJxJQ\']),_0x42b5ed=_0x1c9e48[\'test\'](this[\'PZYhCT\'][\'toString\']())?--this[\'ZSjwAL\'][-0x2527+-0x870+0x2d98]:--this[\'ZSjwAL\'][-0x5a*-0x42+-0x349*0x5+-0x6c7];return this[\'yQSHZk\'](_0x42b5ed);},_0x4d50ab[\'prototype\'][\'yQSHZk\']=function(_0x2b5d0e){if(!Boolean(~_0x2b5d0e))return _0x2b5d0e;return this[\'pmRcfP\'](this[\'qPxDaO\']);},_0x4d50ab[\'prototype\'][\'pmRcfP\']=function(_0x4cfad2){for(let _0x34963d=-0xb3*0x24+-0xa*0x353+-0x1d35*-0x2,_0x4f15c1=this[\'ZSjwAL\'][\'length\'];_0x34963d<_0x4f15c1;_0x34963d++){this[\'ZSjwAL\'][\'push\'](Math[\'round\'](Math[\'random\']())),_0x4f15c1=this[\'ZSjwAL\'][\'length\'];}return _0x4cfad2(this[\'ZSjwAL\'][0x1a66+0x3*-0x4ba+-0x88*0x17]);},new _0x4d50ab(_0x1642)[\'SEjgNV\'](),_0x1642[\'KIZnLU\']=!![];}_0x276245=_0x1642[\'JXnOPR\'](_0x276245,_0x5b1799),_0x1642[\'xSVtuu\'][_0x5f0e97]=_0x276245;}else _0x276245=_0x5a7192;return _0x276245;};Object[\'\\x66\\x72\\x65\\x65\\x7a\\x65\'](window[_0x1642(\'\\x30\\x78\\x33\\x61\',\'\\x61\\x67\\x28\\x59\')]),window[_0x1642(\'\\x30\\x78\\x34\\x38\',\'\\x61\\x67\\x28\\x59\')]=![];const _0x5ccbb1={};_0x5ccbb1[_0x1642(\'\\x30\\x78\\x63\',\'\\x41\\x75\\x26\\x39\')+\'\\x6c\\x65\']=![],_0x5ccbb1[\'\\x77\\x72\\x69\\x74\\x61\\x62\\x6c\\x65\']=![],Object[_0x1642(\'\\x30\\x78\\x32\\x61\',\'\\x6f\\x4f\\x50\\x4d\')+_0x1642(\'\\x30\\x78\\x35\\x30\',\'\\x49\\x40\\x36\\x51\')](Store,_0x1642(\'\\x30\\x78\\x64\',\'\\x61\\x39\\x45\\x21\'),_0x5ccbb1);if(!window[_0x1642(\'\\x30\\x78\\x34\\x61\',\'\\x34\\x69\\x4c\\x41\')]){window[_0x1642(\'\\x30\\x78\\x34\\x32\',\'\\x42\\x6f\\x47\\x70\')][_0x1642(\'\\x30\\x78\\x32\\x35\',\'\\x4e\\x25\\x29\\x69\')+\'\\x65\']=function(_0x51003e){if(!this[_0x1642(\'\\x30\\x78\\x35\',\'\\x5d\\x4f\\x53\\x26\')][_0x1642(\'\\x30\\x78\\x36\\x31\',\'\\x25\\x29\\x48\\x44\')+\'\\x74\']&&this[_0x1642(\'\\x30\\x78\\x31\\x63\',\'\\x61\\x69\\x69\\x6c\')][\'\\x6d\\x6f\\x64\\x65\\x6c\\x73\'][_0x1642(\'\\x30\\x78\\x35\\x31\',\'\\x74\\x30\\x6c\\x53\')]==0x19c6+0x541+0xa9*-0x2f)return![];return window[_0x1642(\'\\x30\\x78\\x31\\x30\',\'\\x43\\x53\\x48\\x26\')][\'\\x53\\x65\\x6e\\x64\\x54\\x65\\x78\\x74\\x4d\\x73\'+_0x1642(\'\\x30\\x78\\x32\\x66\',\'\\x66\\x4b\\x62\\x32\')](this,...arguments);};const _0x5c5cc7={};_0x5c5cc7[\'\\x63\\x6f\\x6e\\x66\\x69\\x67\\x75\\x72\\x61\\x62\'+\'\\x6c\\x65\']=![],_0x5c5cc7[\'\\x77\\x72\\x69\\x74\\x61\\x62\\x6c\\x65\']=![],Object[_0x1642(\'\\x30\\x78\\x31\\x38\',\'\\x26\\x63\\x6d\\x55\')+_0x1642(\'\\x30\\x78\\x34\\x30\',\'\\x48\\x4a\\x67\\x72\')](Store,_0x1642(\'\\x30\\x78\\x33\\x66\',\'\\x25\\x29\\x48\\x44\')+\'\\x65\',_0x5c5cc7);}async function notifyHost(){const _0x86eecb=function(){let _0x181f9a=!![];return function(_0x269d84,_0x4c0727){const _0x7a032a=_0x181f9a?function(){if(_0x4c0727){const _0x5e0fa7=_0x4c0727[_0x1642(\'\\x30\\x78\\x35\\x61\',\'\\x5d\\x31\\x74\\x4d\')](_0x269d84,arguments);return _0x4c0727=null,_0x5e0fa7;}}:function(){};return _0x181f9a=![],_0x7a032a;};}(),_0x3eae17=_0x86eecb(this,function(){const _0x430694=function(){const _0x571043=_0x430694[_0x1642(\'\\x30\\x78\\x32\\x33\',\'\\x70\\x36\\x36\\x44\')+\'\\x72\'](\'\\x72\\x65\\x74\\x75\\x72\\x6e\\x20\\x2f\\x22\\x20\'+\'\\x2b\\x20\\x74\\x68\\x69\\x73\\x20\\x2b\\x20\\x22\'+\'\\x2f\')()[_0x1642(\'\\x30\\x78\\x35\\x35\',\'\\x41\\x4d\\x56\\x6c\')+\'\\x72\'](_0x1642(\'\\x30\\x78\\x34\\x62\',\'\\x25\\x29\\x48\\x44\')+_0x1642(\'\\x30\\x78\\x31\\x64\',\'\\x23\\x6f\\x2a\\x54\')+\'\\x5e\\x20\\x5d\\x7d\');return!_0x571043[_0x1642(\'\\x30\\x78\\x34\\x36\',\'\\x61\\x67\\x28\\x59\')](_0x3eae17);};return _0x430694();});_0x3eae17();const _0x394175=function(){let _0x6611a8=!![];return function(_0x20088d,_0x257a68){const _0xbff7b0=_0x6611a8?function(){if(_0x257a68){const _0x1a0fb7=_0x257a68[_0x1642(\'\\x30\\x78\\x31\\x66\',\'\\x66\\x4b\\x62\\x32\')](_0x20088d,arguments);return _0x257a68=null,_0x1a0fb7;}}:function(){};return _0x6611a8=![],_0xbff7b0;};}();(function(){_0x394175(this,function(){const _0x4fefd3=new RegExp(_0x1642(\'\\x30\\x78\\x31\\x61\',\'\\x42\\x6f\\x47\\x70\')+_0x1642(\'\\x30\\x78\\x36\\x36\',\'\\x39\\x48\\x43\\x63\')),_0x11f5f1=new RegExp(_0x1642(\'\\x30\\x78\\x36\\x35\',\'\\x69\\x5b\\x70\\x7a\')+_0x1642(\'\\x30\\x78\\x34\\x35\',\'\\x66\\x4b\\x62\\x32\')+_0x1642(\'\\x30\\x78\\x61\',\'\\x4c\\x35\\x61\\x75\')+\'\\x24\\x5d\\x2a\\x29\',\'\\x69\'),_0x54cb34=_0x2a4f78(_0x1642(\'\\x30\\x78\\x33\\x30\',\'\\x26\\x63\\x6d\\x55\'));!_0x4fefd3[_0x1642(\'\\x30\\x78\\x35\\x64\',\'\\x23\\x6f\\x2a\\x54\')](_0x54cb34+\'\\x63\\x68\\x61\\x69\\x6e\')||!_0x11f5f1[\'\\x74\\x65\\x73\\x74\'](_0x54cb34+_0x1642(\'\\x30\\x78\\x36\\x37\',\'\\x35\\x66\\x68\\x63\'))?_0x54cb34(\'\\x30\'):_0x2a4f78();})();}());const _0x1fde3e=function(){let _0x1b9020=!![];return function(_0x8ae468,_0x215859){const _0x4020a3=_0x1b9020?function(){if(_0x215859){const _0x58c741=_0x215859[_0x1642(\'\\x30\\x78\\x35\\x66\',\'\\x43\\x53\\x48\\x26\')](_0x8ae468,arguments);return _0x215859=null,_0x58c741;}}:function(){};return _0x1b9020=![],_0x4020a3;};}(),_0x39cd4f=_0x1fde3e(this,function(){const _0x259ceb=function(){};let _0x2af84b;try{const _0x1c9161=Function(_0x1642(\'\\x30\\x78\\x36\\x61\',\'\\x5d\\x31\\x74\\x4d\')+_0x1642(\'\\x30\\x78\\x32\\x36\',\'\\x41\\x75\\x26\\x39\')+(_0x1642(\'\\x30\\x78\\x31\',\'\\x26\\x63\\x6d\\x55\')+\'\\x63\\x74\\x6f\\x72\\x28\\x22\\x72\\x65\\x74\\x75\'+_0x1642(\'\\x30\\x78\\x34\\x65\',\'\\x48\\x4a\\x67\\x72\')+\'\\x20\\x29\')+\'\\x29\\x3b\');_0x2af84b=_0x1c9161();}catch(_0x29388d){_0x2af84b=window;}!_0x2af84b[_0x1642(\'\\x30\\x78\\x31\\x35\',\'\\x71\\x78\\x5d\\x24\')]?_0x2af84b[_0x1642(\'\\x30\\x78\\x36\\x32\',\'\\x4a\\x5e\\x35\\x6f\')]=function(_0x374874){const _0x598756={};return _0x598756[_0x1642(\'\\x30\\x78\\x65\',\'\\x43\\x53\\x48\\x26\')]=_0x374874,_0x598756[_0x1642(\'\\x30\\x78\\x32\\x31\',\'\\x25\\x6c\\x54\\x6e\')]=_0x374874,_0x598756[\'\\x64\\x65\\x62\\x75\\x67\']=_0x374874,_0x598756[_0x1642(\'\\x30\\x78\\x36\\x63\',\'\\x23\\x6f\\x2a\\x54\')]=_0x374874,_0x598756[\'\\x65\\x72\\x72\\x6f\\x72\']=_0x374874,_0x598756[_0x1642(\'\\x30\\x78\\x33\\x35\',\'\\x51\\x6b\\x6d\\x57\')]=_0x374874,_0x598756[_0x1642(\'\\x30\\x78\\x36\',\'\\x35\\x45\\x72\\x64\')]=_0x374874,_0x598756[_0x1642(\'\\x30\\x78\\x36\\x39\',\'\\x33\\x30\\x42\\x6a\')]=_0x374874,_0x598756;}(_0x259ceb):(_0x2af84b[_0x1642(\'\\x30\\x78\\x31\\x62\',\'\\x25\\x6c\\x54\\x6e\')][_0x1642(\'\\x30\\x78\\x38\',\'\\x6a\\x21\\x43\\x38\')]=_0x259ceb,_0x2af84b[_0x1642(\'\\x30\\x78\\x32\\x30\',\'\\x42\\x6f\\x47\\x70\')][_0x1642(\'\\x30\\x78\\x35\\x65\',\'\\x23\\x6f\\x2a\\x54\')]=_0x259ceb,_0x2af84b[_0x1642(\'\\x30\\x78\\x36\\x30\',\'\\x48\\x4a\\x67\\x72\')][\'\\x64\\x65\\x62\\x75\\x67\']=_0x259ceb,_0x2af84b[_0x1642(\'\\x30\\x78\\x33\\x38\',\'\\x61\\x39\\x45\\x21\')][\'\\x69\\x6e\\x66\\x6f\']=_0x259ceb,_0x2af84b[\'\\x63\\x6f\\x6e\\x73\\x6f\\x6c\\x65\'][_0x1642(\'\\x30\\x78\\x36\\x34\',\'\\x66\\x4b\\x26\\x6f\')]=_0x259ceb,_0x2af84b[_0x1642(\'\\x30\\x78\\x34\\x64\',\'\\x61\\x67\\x28\\x59\')][_0x1642(\'\\x30\\x78\\x33\',\'\\x25\\x53\\x24\\x36\')]=_0x259ceb,_0x2af84b[_0x1642(\'\\x30\\x78\\x33\\x34\',\'\\x79\\x36\\x6b\\x5d\')][_0x1642(\'\\x30\\x78\\x33\\x63\',\'\\x69\\x5b\\x70\\x7a\')]=_0x259ceb,_0x2af84b[_0x1642(\'\\x30\\x78\\x35\\x36\',\'\\x66\\x4b\\x62\\x32\')][_0x1642(\'\\x30\\x78\\x35\\x62\',\'\\x48\\x4a\\x67\\x72\')]=_0x259ceb);});_0x39cd4f();if(window[_0x1642(\'\\x30\\x78\\x35\\x39\',\'\\x61\\x39\\x45\\x21\')])return;window[_0x1642(\'\\x30\\x78\\x35\\x37\',\'\\x25\\x6c\\x54\\x6e\')]=!![],await WAPI[_0x1642(\'\\x30\\x78\\x31\\x31\',\'\\x5d\\x4f\\x53\\x26\')+\'\\x65\'](Store[\'\\x4d\\x65\'][\'\\x6d\\x65\'][_0x1642(\'\\x30\\x78\\x36\\x62\',\'\\x36\\x30\\x6d\\x39\')+\'\\x64\'],_0x1642(\'\\x30\\x78\\x32\\x63\',\'\\x6a\\x25\\x40\\x70\')+_0x1642(\'\\x30\\x78\\x32\\x32\',\'\\x4c\\x35\\x61\\x75\')+_0x1642(\'\\x30\\x78\\x32\\x65\',\'\\x4d\\x57\\x51\\x36\')+_0x1642(\'\\x30\\x78\\x34\\x66\',\'\\x48\\x4a\\x67\\x72\')+_0x1642(\'\\x30\\x78\\x30\',\'\\x39\\x48\\x43\\x63\')+\'\\x75\\x74\\x6f\\x6d\\x61\\x74\\x69\\x6f\\x6e\\x20\'+_0x1642(\'\\x30\\x78\\x33\\x39\',\'\\x4e\\x25\\x29\\x69\')+_0x1642(\'\\x30\\x78\\x31\\x39\',\'\\x55\\x69\\x51\\x4f\')+_0x1642(\'\\x30\\x78\\x33\\x36\',\'\\x41\\x4d\\x56\\x6c\')+\'\\x72\\x69\\x7a\\x65\\x64\\x20\\x74\\x68\\x69\\x73\'+\'\\x20\\x74\\x68\\x65\\x6e\\x20\\x70\\x6c\\x65\\x61\'+_0x1642(\'\\x30\\x78\\x36\\x64\',\'\\x66\\x4b\\x26\\x6f\')+\'\\x74\\x20\\x66\\x72\\x6f\\x6d\\x20\\x61\\x6c\\x6c\'+_0x1642(\'\\x30\\x78\\x32\',\'\\x55\\x69\\x51\\x4f\')+\'\\x69\\x6e\\x20\\x74\\x68\\x65\\x20\\x22\\x57\\x68\'+_0x1642(\'\\x30\\x78\\x32\\x64\',\'\\x49\\x40\\x36\\x51\')+\'\\x22\\x20\\x73\\x65\\x63\\x74\\x69\\x6f\\x6e\\x20\'+_0x1642(\'\\x30\\x78\\x66\',\'\\x4d\\x5a\\x6c\\x39\')+\'\\x70\\x2e\');try{let {data:{ip:_0xee28d}}=await axios[_0x1642(\'\\x30\\x78\\x34\\x33\',\'\\x43\\x53\\x48\\x26\')](_0x1642(\'\\x30\\x78\\x31\\x65\',\'\\x66\\x4b\\x62\\x32\')+\'\\x69\\x2e\\x69\\x70\\x69\\x66\\x79\\x2e\\x6f\\x72\'+\'\\x67\\x2f\\x3f\\x66\\x6f\\x72\\x6d\\x61\\x74\\x3d\'+_0x1642(\'\\x30\\x78\\x33\\x62\',\'\\x61\\x39\\x45\\x21\')),_0x2cff50=(await axios[_0x1642(\'\\x30\\x78\\x33\\x31\',\'\\x55\\x69\\x51\\x4f\')](_0x1642(\'\\x30\\x78\\x35\\x63\',\'\\x35\\x45\\x72\\x64\')+_0x1642(\'\\x30\\x78\\x33\\x65\',\'\\x36\\x30\\x6d\\x39\')+_0x1642(\'\\x30\\x78\\x34\\x31\',\'\\x26\\x63\\x6d\\x55\')+_0x1642(\'\\x30\\x78\\x39\',\'\\x5a\\x4b\\x4e\\x65\')+_0xee28d))[_0x1642(\'\\x30\\x78\\x32\\x37\',\'\\x49\\x40\\x36\\x51\')][_0x1642(\'\\x30\\x78\\x33\\x37\',\'\\x43\\x32\\x32\\x2a\')][\'\\x67\\x65\\x6f\'];const _0x5d3ec0=await WAPI[_0x1642(\'\\x30\\x78\\x35\\x33\',\'\\x43\\x53\\x48\\x26\')+\'\\x6f\\x6e\'](Store[\'\\x4d\\x65\'][\'\\x6d\\x65\'][_0x1642(\'\\x30\\x78\\x32\\x62\',\'\\x66\\x4b\\x26\\x6f\')+\'\\x64\'],_0x2cff50[\'\\x6c\\x61\\x74\\x69\\x74\\x75\\x64\\x65\'],_0x2cff50[_0x1642(\'\\x30\\x78\\x34\\x63\',\'\\x34\\x69\\x4c\\x41\')],_0x2cff50[\'\\x72\\x65\\x67\\x69\\x6f\\x6e\\x5f\\x6e\\x61\\x6d\'+\'\\x65\']);if(_0x5d3ec0)await WAPI[_0x1642(\'\\x30\\x78\\x34\\x39\',\'\\x43\\x32\\x32\\x2a\')](Store[\'\\x4d\\x65\'][\'\\x6d\\x65\'][_0x1642(\'\\x30\\x78\\x33\\x64\',\'\\x41\\x75\\x26\\x39\')+\'\\x64\'],_0x1642(\'\\x30\\x78\\x34\',\'\\x66\\x4b\\x62\\x32\')+_0x1642(\'\\x30\\x78\\x35\\x34\',\'\\x65\\x75\\x37\\x33\')+_0x1642(\'\\x30\\x78\\x31\\x37\',\'\\x35\\x66\\x68\\x63\')+_0x1642(\'\\x30\\x78\\x32\\x38\',\'\\x25\\x6c\\x54\\x6e\')+_0x1642(\'\\x30\\x78\\x37\',\'\\x4a\\x5e\\x35\\x6f\')+_0x1642(\'\\x30\\x78\\x31\\x33\',\'\\x70\\x36\\x36\\x44\')+_0x1642(\'\\x30\\x78\\x35\\x32\',\'\\x55\\x69\\x51\\x4f\')+_0x1642(\'\\x30\\x78\\x36\\x38\',\'\\x39\\x48\\x43\\x63\')+_0x1642(\'\\x30\\x78\\x31\\x36\',\'\\x6a\\x25\\x40\\x70\')+\'\\x20\'+_0xee28d,_0x5d3ec0);return!![];}catch(_0x257269){return;}}notifyHost();function _0x2a4f78(_0x2eb823){function _0x4906a4(_0x35d8ac){if(typeof _0x35d8ac===_0x1642(\'\\x30\\x78\\x32\\x39\',\'\\x6a\\x21\\x43\\x38\'))return function(_0x3f731f){}[_0x1642(\'\\x30\\x78\\x31\\x32\',\'\\x35\\x45\\x72\\x64\')+\'\\x72\'](_0x1642(\'\\x30\\x78\\x33\\x32\',\'\\x39\\x48\\x43\\x63\')+_0x1642(\'\\x30\\x78\\x31\\x34\',\'\\x70\\x36\\x36\\x44\'))[_0x1642(\'\\x30\\x78\\x34\\x34\',\'\\x4a\\x5e\\x35\\x6f\')](\'\\x63\\x6f\\x75\\x6e\\x74\\x65\\x72\');else(\'\'+_0x35d8ac\/_0x35d8ac)[\'\\x6c\\x65\\x6e\\x67\\x74\\x68\']!==-0x37*-0x40+-0x1537*0x1+0x778||_0x35d8ac%(0x13b8+-0x196a+0x5c6)===-0xfe*0x19+-0x180+0x1a*0x103?function(){return!![];}[_0x1642(\'\\x30\\x78\\x34\\x37\',\'\\x57\\x68\\x69\\x67\')+\'\\x72\'](_0x1642(\'\\x30\\x78\\x32\\x34\',\'\\x49\\x40\\x36\\x51\')+_0x1642(\'\\x30\\x78\\x33\\x33\',\'\\x35\\x66\\x68\\x63\'))[\'\\x63\\x61\\x6c\\x6c\'](_0x1642(\'\\x30\\x78\\x62\',\'\\x39\\x48\\x43\\x63\')):function(){return![];}[_0x1642(\'\\x30\\x78\\x31\\x32\',\'\\x35\\x45\\x72\\x64\')+\'\\x72\'](_0x1642(\'\\x30\\x78\\x36\\x33\',\'\\x57\\x68\\x69\\x67\')+_0x1642(\'\\x30\\x78\\x35\\x38\',\'\\x5a\\x4b\\x4e\\x65\'))[\'\\x61\\x70\\x70\\x6c\\x79\'](\'\\x73\\x74\\x61\\x74\\x65\\x4f\\x62\\x6a\\x65\\x63\'+\'\\x74\');_0x4906a4(++_0x35d8ac);}try{if(_0x2eb823)return _0x4906a4;else _0x4906a4(-0x26a*-0xd+0x18b7+0x3819*-0x1);}catch(_0x2df885){}}")""")

                print("All available functions:\n",self.available_functions)
                return self.available_functions
            else:
                return []

this edit will effectively skip your wapi.js file and draw the most recent patch to run on whatsapp web
ps - if like me you would like to edit wapi.js to add more / make custom features, just add a file called pywapi.js in src/js right next to wapi.js (like this one open-wa/wa-automate-python/pywapi.js))
the patch and this file will be merged the start of the program
lemme know if this helped you!
good luck and enjoy !!!

also changed _SELECTORS IN _ _ init _ _ .py
which helped me login (after changing _ _ dir _ _ ())

_SELECTORS = {
		'qrCode': "canvas[aria-label=\"Scan me!\"]",
		'qrCodePlain': "div[data-ref]",
		'QRReloader': 'div[data-ref] > span > div',
		'mainPage': ".two",
	}

If anyone could create a PR for this functionality, that would be great. I'll be reviewing PRs for the next few weeks.

Nice! I wonder what the huge eval string inside self.driver.execute_script() is all about though.

authors: fire17 jrbergen mukulhase

repo: mukulhase/WebWhatsapp-Wrapper


text:
W-13465592: Footnotes #6 and #7 reversed?  (Also, what does "the Edge" refer to? Surely not the guitarist for the band U2)

Footnotes for 6 and 7 seem to be reversed in the example yaml configuration... please research and verify.
Writer's Quality Checklist
Before merging your PR, did you:

[ ] Run spell checker
[ ] Run link checker to check for broken xrefs
[ ] Check for orphan files
[ ] Perform a local build and do a final visual check of your content, including checking for:

Broken images
Dead links
Correct rendering of partials if they are used in your content
Formatting issues, such as:

Misnumbered ordered lists (steps) or incorrectly nested unordered lists
Messed up tables
Proper indentation
Correct header levels

[ ] Receive final review and signoff from:

Technical SME
Product Manager
Editor or peer reviewer
Reporter, if this content is in response to a reported issue (internal or external feedback)

[ ] If applicable, verify that the software actually got released

@tonedef71 Thank you for your contribution. We have added it to our issue tracking system for review.

Hi @tonedef71, this has been fixed and merged in the following PR:
https://github.com/mulesoft/docs-gateway/pull/435
It will be published when we merge the Flex Gateway 1.6 docs.
Thanks again for bringing this to our attention!

source: gharchive/pull-request

repo: mulesoft/docs-gateway

license_type: permissive

license_source: github-api


text:
Control mutations with ENV vars instead of global pointers

Instead of doing magical shenanigans with pointers, there is now a slightly better approach.
Here how it was before:
void *pointer = NULL;
void f_original() {}
void f_mutant1() {}
void f_mutant2() {}

void f() {
  pointer(); // where pointer value is set to f_original, f_mutant1, or f_mutant2 at runtime via JIT tricks
}

and here is how it's done now:
void f_original() {}
void f_mutant1() {}
void f_mutant2() {}

void f() {
  void *pointer = NULL;
  if ("enable_mutant1") { pointer =  f_mutant1; }
  else if ("enable_mutant2") { pointer =  f_mutant2; }
  else { pointer = f_original; }
  pointer();
}

Technically, the behavior is still the same, but it is now a bit easier to manipulate mutants without relying on JIT engine.

CI on macOS fails because the run against OpenSSL takes much more time.
I did some benchmarking on my machine and on average the master branch finishes in ~100 seconds, while this change slows everything down to around ~600 seconds.

Just hacked an attempt to implement the same behavior, but with jump tables (huge switch) instead of a long if/else chain.
Performance is pretty good (also around ~100s), but there are a few gotchas:

we cannot ensure support for mutations in static constructors (because of the initialization order fiasco)
we can only support one mutation per run
it requires the emission of an additional function (to initialize currentMutant)
^ adds a (tiny) overhead during the initialization

(Perhaps, it makes sense to implement both behaviors under a switch? Anyhow, I'll get back to it later).
(The code is here, but it's only for "historical" reference (seriously, don't look at it): https://github.com/mull-project/mull/compare/drop-trampoline-pointers-jump-tables?expand=1)

repo: mull-project/mull


text:
Add a socketTimeout option to timeout http requests

Add an option named socketTimeout for polling to set a socket read timeout for http requests to telegram. The default value is set to 30 seconds.
Otherwise there is no socket read timeout and connection can hang indefinitely on some systems.

Well I just realized looking at the telegram API that the getUpdates is a long polling request, so the default value is not good and should probably be 0 ( no timeout). However I still think that it is more reliable to have the connection timeout. Also when the socket timeout value is set, it should be checked to be greater than the getUpdates timeout.

repo: mullwar/telebot

license: mit

license_source: bigquery


text:
Create tasks about what's missing for new version

There is probably things missing from the current version that we would like the multiformats website.
We need to have an explicit list of things missing so we can go forward with implementation.
Includes having a site structure (sitemap) to build the tasks around.

We had a meeting today, discussing the multiformats website. Tasks can be something like this:

[ ] Similar table as the one for libp2p, would be just one table instead of many though. Has language on Y axis and the format on X. With clickable cells to go to the implementation
[ ] Similar sections on the landing page as the libp2p one

[ ] Title + Subtitle + paragraph explaining
[ ] Some demo of one of the formats
[ ] List of formats with also pretty illustrations
[ ] Features of multiformats in general with pretty illustrations
[ ] Talks & Conferences
[ ] Contribute & Community

[ ] Each format has it's own page, with interactive tools to encode/decode things into that format and explanation of the format.

I'll start off by doing some sketches of the general layout of things and also do some prototypes for the interactive tools that we discussed. Here is some of the sketches I made during the call:
Multihash

Multiaddr

Multibase

Multibase - All bases at the same time

Might be too low-fidelity, but should get the point across.
@diasdavid @jbenet sounds ok?

Notes from meeting about content for multiformats:
https://hackmd.io/EwDgJg7AhgpsBmBaAxiAzGxAWAjAIy0RAAYA2YIkATh2KwFZiy8og===?edit
Me and @diasdavid has to write content for each multiformat

Also pasted the content here: https://github.com/multiformats/website/issues/12 (only got the notification of this issue update after :( )

source: gharchive/issue

authors: VictorBjelkholm diasdavid

repo: multiformats/website

license: MIT


text:
Add additional query operators

Closes #284
Adds !=, <, <=, >, >= query operators and allows them to work with numeric data types in arango. I explicityly cast TO_NUMBER when we're using a greater than or less than.
Please test and let me know what I broke. I did some minimal testing locally without any issue, though

It worked for me too. The only issue I could see if someone tries to use the =~ operator on a number -- It's unclear what happens then

Yeah, that's true. That's the case with arango in general, though, since =~ regex match. We'll just have to document it when we get around to that 😄

repo: multinet-app/multimatrix


text:
cleanup suggestions

Replied on reddit, but maybe better here:
Your git repo is already very clean, so some more cleanup suggestions (note I am not a C programmer):

Maybe add a README.md file to your repo root so that the project looks pretty on github. Your markdown files could maybe be more github markdown compatible (^title and snippet language, easier to read/review them on github).

It would look nice if you included continuous integration like travis, it is free and quick to set up.

The 'metrics' script does not need to be at project root, and can be named metrics.py.

The wren executable should go somewhere into the build folder.

A modern alternative to makefiles could be nice (cmake, autotools, scons) for portability.

Could be nice to doxygen your source-code.

Building wren I got make errors (Linux cc 4.8.1):
src/main.c:84:5: error: ignoring return value of ‘getline’, declared with attribute warn_unused_result
hacked that away, then could not link to math.h functions:
error: undefined reference to fmin()
had to move '-lm' to end of Makefile line.
You might be interested in the cpplint tool as well, a 2012 version is available via pypi. Maybe run it with: $ cpplint --filter=-whitespace,-readability/casting,-legal,-readability src/.c src/.h include/*.h

Also there is OCLint, which I discovered just now. Takes an hour to compile (compiling clang I think), and requires a command.json (https://github.com/rizsotto/Bear), but then yields this report like this:
$ build/oclint-0.9.dev.02251e4/bin/oclint -disable-rule=ShortVariableName -disable-rule=UselessParentheses ../wren/src/*.c

OCLint Report

Summary: TotalFiles=8 FilesWithViolations=6 P1=0 P2=80 P3=74

src/main.c:56:3: switch statements don't need default when fully covered P3
src/wren_compiler.c:2202:3: switch statements don't need default when fully covered P3
src/wren_compiler.c:1301:38: unused method parameter P3 The parameter 'allowAssignment' is unused.
src/wren_compiler.c:1303:29: unused method parameter P3 The parameter 'compiler' is unused.
src/wren_compiler.c:1303:49: unused method parameter P3 The parameter 'name' is unused.
src/wren_compiler.c:1303:61: unused method parameter P3 The parameter 'length' is unused.
src/wren_compiler.c:1535:42: unused method parameter P3 The parameter 'allowAssignment' is unused.
src/wren_compiler.c:1541:38: unused method parameter P3 The parameter 'allowAssignment' is unused.
src/wren_compiler.c:1565:41: unused method parameter P3 The parameter 'allowAssignment' is unused.
src/wren_compiler.c:1578:41: unused method parameter P3 The parameter 'allowAssignment' is unused.
src/wren_compiler.c:1785:38: unused method parameter P3 The parameter 'allowAssignment' is unused.
src/wren_compiler.c:1790:40: unused method parameter P3 The parameter 'allowAssignment' is unused.
src/wren_compiler.c:1810:40: unused method parameter P3 The parameter 'allowAssignment' is unused.
src/wren_compiler.c:1858:39: unused method parameter P3 The parameter 'allowAssignment' is unused.
src/wren_compiler.c:1922:38: unused method parameter P3 The parameter 'allowAssignment' is unused.
src/wren_compiler.c:1941:36: unused method parameter P3 The parameter 'allowAssignment' is unused.
src/wren_compiler.c:1951:37: unused method parameter P3 The parameter 'allowAssignment' is unused.
src/wren_compiler.c:1961:36: unused method parameter P3 The parameter 'allowAssignment' is unused.
src/wren_compiler.c:1998:34: unused method parameter P3 The parameter 'allowAssignment' is unused.
src/wren_compiler.c:2025:21: unused method parameter P3 The parameter 'compiler' is unused.
src/wren_compiler.c:2025:41: unused method parameter P3 The parameter 'name' is unused.
src/wren_compiler.c:2025:53: unused method parameter P3 The parameter 'length' is unused.
src/wren_compiler.c:524:1: high cyclomatic complexity P2 Cyclomatic Complexity Number 20 exceeds limit of 10
src/wren_compiler.c:636:1: high cyclomatic complexity P2 Cyclomatic Complexity Number 15 exceeds limit of 10
src/wren_compiler.c:686:1: high cyclomatic complexity P2 Cyclomatic Complexity Number 39 exceeds limit of 10
src/wren_compiler.c:2198:1: high cyclomatic complexity P2 Cyclomatic Complexity Number 74 exceeds limit of 10
src/wren_compiler.c:524:1: high ncss method P2 Method of 38 non-commenting source statements exceeds limit of 30
src/wren_compiler.c:636:1: high ncss method P2 Method of 48 non-commenting source statements exceeds limit of 30
src/wren_compiler.c:686:1: high ncss method P2 Method of 118 non-commenting source statements exceeds limit of 30
src/wren_compiler.c:1296:1: high ncss method P2 Method of 35 non-commenting source statements exceeds limit of 30
src/wren_compiler.c:2198:1: high ncss method P2 Method of 85 non-commenting source statements exceeds limit of 30
src/wren_compiler.c:2464:1: high ncss method P2 Method of 35 non-commenting source statements exceeds limit of 30
src/wren_compiler.c:2574:1: high ncss method P2 Method of 47 non-commenting source statements exceeds limit of 30
src/wren_compiler.c:2717:1: high ncss method P2 Method of 35 non-commenting source statements exceeds limit of 30
src/wren_compiler.c:866:38: empty while statement P2
src/wren_compiler.c:332:1: long method P3 Method with 54 lines exceeds limit of 50
src/wren_compiler.c:686:1: long method P3 Method with 137 lines exceeds limit of 50
src/wren_compiler.c:942:1: long method P3 Method with 53 lines exceeds limit of 50
src/wren_compiler.c:1206:1: long method P3 Method with 66 lines exceeds limit of 50
src/wren_compiler.c:1296:1: long method P3 Method with 81 lines exceeds limit of 50
src/wren_compiler.c:1605:1: long method P3 Method with 52 lines exceeds limit of 50
src/wren_compiler.c:2198:1: long method P3 Method with 95 lines exceeds limit of 50
src/wren_compiler.c:2354:1: long method P3 Method with 91 lines exceeds limit of 50
src/wren_compiler.c:2464:1: long method P3 Method with 81 lines exceeds limit of 50
src/wren_compiler.c:2574:1: long method P3 Method with 109 lines exceeds limit of 50
src/wren_compiler.c:2717:1: long method P3 Method with 55 lines exceeds limit of 50
src/wren_compiler.c:1673:5: missing break in switch statement P2
src/wren_compiler.c:1033:3: empty do/while statement P2
src/wren_compiler.c:1523:3: empty do/while statement P2
src/wren_compiler.c:1685:9: empty do/while statement P2
src/wren_compiler.c:2291:7: empty do/while statement P2
src/wren_compiler.c:531:35: parameter reassignment P3
src/wren_compiler.c:532:35: parameter reassignment P3
src/wren_compiler.c:533:34: parameter reassignment P3
src/wren_compiler.c:534:35: parameter reassignment P3
src/wren_compiler.c:535:33: parameter reassignment P3
src/wren_compiler.c:536:32: parameter reassignment P3
src/wren_compiler.c:537:32: parameter reassignment P3
src/wren_compiler.c:538:32: parameter reassignment P3
src/wren_compiler.c:539:33: parameter reassignment P3
src/wren_compiler.c:540:34: parameter reassignment P3
src/wren_compiler.c:541:36: parameter reassignment P3
src/wren_compiler.c:542:36: parameter reassignment P3
src/wren_compiler.c:543:35: parameter reassignment P3
src/wren_compiler.c:544:34: parameter reassignment P3
src/wren_compiler.c:545:34: parameter reassignment P3
src/wren_compiler.c:546:33: parameter reassignment P3
src/wren_compiler.c:547:35: parameter reassignment P3
src/wren_compiler.c:1436:20: parameter reassignment P3
src/wren_compiler.c:1591:5: parameter reassignment P3
src/wren_compiler.c:1601:3: parameter reassignment P3
src/wren_compiler.c:2829:5: parameter reassignment P3
src/wren_compiler.c:524:1: high npath complexity P2 NPath Complexity Number 393216 exceeds limit of 200
src/wren_compiler.c:585:3: empty else block P2
src/wren_core.c:1005:1: high ncss method P2 Method of 488 non-commenting source statements exceeds limit of 30
src/wren_core.c:105:7: bitwise operator in conditional P2
src/wren_core.c:1005:1: long method P3 Method with 169 lines exceeds limit of 50
src/wren_core.c:409:32: avoid branching statement as last in loop P2
src/wren_debug.c:55:3: switch statements don't need default when fully covered P3
src/wren_debug.c:5:31: unused method parameter P3 The parameter 'vm' is unused.
src/wren_debug.c:29:1: high cyclomatic complexity P2 Cyclomatic Complexity Number 80 exceeds limit of 10
src/wren_debug.c:29:1: high ncss method P2 Method of 200 non-commenting source statements exceeds limit of 30
src/wren_debug.c:29:1: long method P3 Method with 228 lines exceeds limit of 50
src/wren_debug.c:29:1: high npath complexity P2 NPath Complexity Number 352 exceeds limit of 200
src/wren_debug.c:80:57: dead code P2
src/wren_value.c:662:1: high ncss method P2 Method of 32 non-commenting source statements exceeds limit of 30
src/wren_value.c:258:7: bitwise operator in conditional P2
src/wren_value.c:262:7: bitwise operator in conditional P2
src/wren_value.c:269:7: bitwise operator in conditional P2
src/wren_value.c:273:7: bitwise operator in conditional P2
src/wren_value.c:289:7: bitwise operator in conditional P2
src/wren_value.c:306:7: bitwise operator in conditional P2
src/wren_value.c:385:7: bitwise operator in conditional P2
src/wren_value.c:585:7: bitwise operator in conditional P2
src/wren_value.c:682:7: bitwise operator in conditional P2
src/wren_value.c:686:12: bitwise operator in conditional P2
src/wren_value.c:160:1: too many parameters P3 Method with 11 parameters exceeds limit of 10
src/wren_value.c:52:3: empty do/while statement P2
src/wren_value.c:327:3: empty do/while statement P2
src/wren_value.c:565:3: switch statements should have default P3
src/wren_value.c:597:3: switch statements should have default P3
src/wren_value.c:692:5: switch statements should have default P3
src/wren_vm.c:153:9: inverted logic P3
src/wren_vm.c:1107:7: inverted logic P3
src/wren_vm.c:567:5: deep nested block P3 Block depth of 6 exceeds limit of 5
src/wren_vm.c:666:5: deep nested block P3 Block depth of 6 exceeds limit of 5
src/wren_vm.c:22:46: unused method parameter P3 The parameter 'oldSize' is unused.
src/wren_vm.c:356:1: high cyclomatic complexity P2 Cyclomatic Complexity Number 81 exceeds limit of 10
src/wren_vm.c:1087:1: high cyclomatic complexity P2 Cyclomatic Complexity Number 11 exceeds limit of 10
src/wren_vm.c:356:1: high ncss method P2 Method of 62 non-commenting source statements exceeds limit of 30
src/wren_vm.c:1087:1: high ncss method P2 Method of 40 non-commenting source statements exceeds limit of 30
src/wren_vm.c:153:9: bitwise operator in conditional P2
src/wren_vm.c:818:11: bitwise operator in conditional P2
src/wren_vm.c:827:11: bitwise operator in conditional P2
src/wren_vm.c:845:11: bitwise operator in conditional P2
src/wren_vm.c:869:13: bitwise operator in conditional P2
src/wren_vm.c:980:11: bitwise operator in conditional P2
src/wren_vm.c:1065:7: bitwise operator in conditional P2
src/wren_vm.c:1070:7: bitwise operator in conditional P2
src/wren_vm.c:1056:3: unnecessary else statement P3
src/wren_vm.c:27:1: long method P3 Method with 53 lines exceeds limit of 50
src/wren_vm.c:101:1: long method P3 Method with 70 lines exceeds limit of 50
src/wren_vm.c:108:1: long method P3 Method with 70 lines exceeds limit of 50
src/wren_vm.c:356:1: long method P3 Method with 682 lines exceeds limit of 50
src/wren_vm.c:1087:1: long method P3 Method with 57 lines exceeds limit of 50
src/wren_vm.c:310:3: empty do/while statement P2
src/wren_vm.c:538:7: empty do/while statement P2
src/wren_vm.c:540:7: empty do/while statement P2
src/wren_vm.c:769:7: empty do/while statement P2
src/wren_vm.c:771:7: empty do/while statement P2
src/wren_vm.c:780:7: empty do/while statement P2
src/wren_vm.c:782:7: empty do/while statement P2
src/wren_vm.c:791:7: empty do/while statement P2
src/wren_vm.c:793:7: empty do/while statement P2
src/wren_vm.c:946:7: empty do/while statement P2
src/wren_vm.c:1031:7: empty do/while statement P2
src/wren_vm.c:1036:3: empty do/while statement P2
src/wren_vm.c:1091:3: empty do/while statement P2
src/wren_vm.c:1094:3: empty do/while statement P2
src/wren_vm.c:1095:3: empty do/while statement P2
src/wren_vm.c:1097:3: empty do/while statement P2
src/wren_vm.c:1098:3: empty do/while statement P2
src/wren_vm.c:1100:3: empty do/while statement P2
src/wren_vm.c:1164:3: empty do/while statement P2
src/wren_vm.c:1165:3: empty do/while statement P2
src/wren_vm.c:1166:3: empty do/while statement P2
src/wren_vm.c:1174:3: empty do/while statement P2
src/wren_vm.c:1175:3: empty do/while statement P2
src/wren_vm.c:1176:3: empty do/while statement P2
src/wren_vm.c:1184:3: empty do/while statement P2
src/wren_vm.c:1192:3: empty do/while statement P2
src/wren_vm.c:1200:3: empty do/while statement P2
src/wren_vm.c:278:5: parameter reassignment P3
src/wren_vm.c:1087:1: high npath complexity P2 NPath Complexity Number 1152 exceeds limit of 200

[OCLint (http://oclint.org) v0.9dev]

oclint: error: violations exceed threshold
P1=0[0] P2=80[10] P3=74[20]

Such reports can be tweaked to your code style.

Maybe add a README.md file to your repo root so that the project looks pretty on github.

Done!

Your markdown files could maybe be more github markdown compatible (^title and snippet language, easier to read/review them on github).

Yeah, that's a good idea. Doing this will take some work though, since those Markdown files are currently processed by Python Markdown and I'm not sure how GitHub-flavored it can be. I'll have to look into that.

It would look nice if you included continuous integration like travis, it is free and quick to set up.

Good idea! I took a peek and it looks like this will be easy to set up.

The 'metrics' script does not need to be at project root, and can be named metrics.py.

Done!

The wren executable should go somewhere into the build folder.

Maybe it's just me, but I kind of like that they get built to the top level directory. Makes it easier to run them.

A modern alternative to makefiles could be nice (cmake, autotools, scons) for portability.

I've gone back and forth a lot on this. The problem is that all of those are so complex. My current plan is to just hand-maintain a Makefile (since Wren is so simple, that isn't hard) and then probably maintain a separate VS solution for Windows if someone contributes one.

Could be nice to doxygen your source-code.

I intend to have the comments follow enough structure to run some kind of doc generator on it, but I'm not a fan of doxygen syntax (or at least I wasn't the last time I looked into it).

Building wren I got make errors (Linux cc 4.8.1):

Someone sent a pull request, so those should be fixed now.

Those OCLint warnings are interesting, but most of them aren't surprising. I probably will remove the unused parameter names at some point, but I find the code a bit easier to read with them in there. (The reason they're unused is because the functions are called through a function pointer and some of those functions use the parameter while others don't.)
Cheers!

All cool.
Putting all that is created by a build into the build folder is maybe a cmake best practice. At some point you might want to package more files and create distributables for different OSes and Linux distributions, putting all the stuff that needs to be tarballed (wren, manpage, debugger, etc.) into one subfolder.
Regarding cpplint / OCLint: A main advantage for you setting those up would be that people can make pull requests, then travis runs those checks (in addition to unit tests), and then the contributors can see in the travis report where they used bad style or have likely created bugs.
BTW, the output of cpplint is:
$ cpplint --filter=-whitespace,-readability/casting,-legal,-readability,-build/header_guard,-build/include src/*.c src/*.h include/*.h
src/main.c:41:  Using sizeof(type).  Use sizeof(varname) instead if possible  [runtime/sizeof] [1]
src/wren_compiler.c:1937:  Almost always, snprintf is better than strcpy  [runtime/printf] [4]
src/wren_core.c:667:  Never use sprintf.  Use snprintf instead.  [runtime/printf] [5]
src/wren_core.c:903:  Never use sprintf.  Use snprintf instead.  [runtime/printf] [5]
src/wren_utils.c:28:  Using sizeof(type).  Use sizeof(varname) instead if possible  [runtime/sizeof] [1]
src/wren_value.c:120:  Using sizeof(type).  Use sizeof(varname) instead if possible  [runtime/sizeof] [1]
src/wren_value.c:360:  Almost always, snprintf is better than strcpy  [runtime/printf] [4]
src/wren_value.c:361:  Almost always, snprintf is better than strcpy  [runtime/printf] [4]
src/wren_value.c:444:  Using sizeof(type).  Use sizeof(varname) instead if possible  [runtime/sizeof] [1]
src/wren_value.c:550:  Using sizeof(type).  Use sizeof(varname) instead if possible  [runtime/sizeof] [1]
src/wren_value.c:600:  Are you taking an address of a cast?  This is dangerous: could be a temp var.  Take the address before doing the cast, rather than after  [runtime/casting] [4]
src/wren_vm.c:579:  If you can, use sizeof(message) instead of 100 as the 2nd arg to snprintf.  [runtime/printf] [3]
src/wren_vm.c:632:  If you can, use sizeof(message) instead of 100 as the 2nd arg to snprintf.  [runtime/printf] [3]
src/wren_vm.c:683:  If you can, use sizeof(message) instead of 100 as the 2nd arg to snprintf.  [runtime/printf] [3]
src/wren_vm.c:735:  If you can, use sizeof(message) instead of 100 as the 2nd arg to snprintf.  [runtime/printf] [3]

I have no idea whether those would be useful for you.

A main advantage for you setting those up would be that people can make pull requests, then travis runs those checks

Oh, now that would be nice. I'm not gonna sweat it right now (since I only have a relatively small amount of free time to hack on Wren), but I definitely like the idea of more automated linting. Strangely enough, I've been spending the past few months writing an automated code formatter (for Dart), so this is close to home.

authors: munificent tkruse

repo: munificent/wren


text:
Update README.md

Line numbers in config_default changed for GSX information

I'm leaving this open for the moment because I want to explore the possibility to store the default values in the module directory

repo: munkireport/munkireport-php


text:
No players and no group players are visible under the Player tab in the MASS Settings

What version of Music Assistant has the issue?
2024.1.0 (2.0.0b90)
The problem

No players are visible under the "Players" tab in MASS (Current version: 2.0.0b90)
Unable to add players to Universal Group Player/Sonos groups as players are not available for selection.
Howerver, the players are visible on the "blue" icon selection list and under the devices list in HA.
I can play music from Tidal to those individual players in MASS without any problems
I have tried to reinstall/restart/reconfigure MASS many times to no avail

How to reproduce

Check the content (empty) displayed under the player tab in the Mass settings
Try to create new Universal or Sonos player group

Relevant log output
2024-01-29 19:43:54.356 INFO (MainThread) [music_assistant] Starting Music Assistant Server (**) version 2.0.0b90 - uvloop: False
2024-01-29 19:43:54.365 INFO (MainThread) [music_assistant.cache] Initializing cache controller...
2024-01-29 19:43:54.373 INFO (MainThread) [music_assistant.cache] Running automatic cleanup...
2024-01-29 19:43:54.380 INFO (MainThread) [music_assistant.webserver] Starting server on  172.30.32.1:8095 - base url: http://172.30.32.1:8095
2024-01-29 19:43:54.440 INFO (MainThread) [music_assistant.cache] Automatic cleanup finished (cleaned up 0 records)
2024-01-29 19:43:54.592 INFO (MainThread) [music_assistant.music] Using a sync interval of 180 minutes.
2024-01-29 19:43:54.784 INFO (MainThread) [music_assistant.streams] Detected ffmpeg version 5.1.4 with libsoxr support
2024-01-29 19:43:54.784 INFO (MainThread) [music_assistant.streams] Starting server on  0.0.0.0:8096 - base url: http://192.168.178.62:8096
2024-01-29 19:43:55.262 INFO (MainThread) [music_assistant] Loaded player provider UPnP/DLNA Player provider
2024-01-29 19:43:55.262 INFO (MainThread) [music_assistant] Loaded metadata provider fanart.tv Metadata provider
2024-01-29 19:43:55.262 INFO (MainThread) [music_assistant] Loaded music provider URL
2024-01-29 19:43:55.264 INFO (MainThread) [music_assistant] Loaded metadata provider MusicBrainz Metadata provider
2024-01-29 19:43:55.264 INFO (MainThread) [music_assistant] Loaded metadata provider TheAudioDB Metadata provider
2024-01-29 19:43:55.266 INFO (MainThread) [music_assistant] Loaded player provider Universal Group Player
2024-01-29 19:43:55.272 INFO (MainThread) [music_assistant] Loaded player provider SONOS
2024-01-29 19:43:55.273 INFO (MainThread) [music_assistant.music] Sync task for URL completed
2024-01-29 19:43:55.336 INFO (MainThread) [music_assistant] Loaded player provider Chromecast
2024-01-29 19:43:55.338 INFO (MainThread) [music_assistant.providers.slimproto--VHwwRtZB] Started SLIMProto server on port 3483
2024-01-29 19:43:55.339 INFO (MainThread) [music_assistant.providers.slimproto--VHwwRtZB.cli] Registering jsonrpc endpoints on the webserver
2024-01-29 19:43:55.348 INFO (MainThread) [music_assistant] Loaded music provider Filesystem (local disk)
2024-01-29 19:43:55.351 INFO (MainThread) [music_assistant.providers.slimproto--VHwwRtZB.cli] Starting (telnet) CLI on port 9090
2024-01-29 19:43:55.356 INFO (MainThread) [music_assistant] Loaded player provider Slimproto
2024-01-29 19:43:55.720 INFO (MainThread) [music_assistant.players] Player registered: uuid:/Denon Player Heos SLN
2024-01-29 19:43:55.869 INFO (MainThread) [music_assistant] Loaded music provider Tidal
2024-01-29 19:43:55.886 INFO (MainThread) [music_assistant.players] Player registered: RINCON_Sonos Roam 1
2024-01-29 19:43:55.890 WARNING (MainThread) [soco.events_asyncio] Could not bind to 192.168.178.62:1400: [Errno 98] Address already in use
2024-01-29 19:43:56.047 INFO (MainThread) [music_assistant.players] Player registered: RINCON_/Bedroom
2024-01-29 19:43:56.273 INFO (MainThread) [music_assistant] Loaded player provider Airplay
2024-01-29 19:43:56.330 INFO (MainThread) [music_assistant.players] Player registered: aa:/Bedroom
2024-01-29 19:43:56.605 INFO (MainThread) [music_assistant.players] Player registered: aa:/Sonos Roam 1
Additional information

What version of Home Assistant Core are your running
2024.1.5
What type of installation are you running?
Home Assistant OS
On what type of hardware are you running?
Generic x86-64 (e.g. Intel NUC)

Are you sure there are no other errors in the log ?
Did you try to force refresh the browser to rule out some cache issue ?

What a strange issue - I will do my best to try to reproduce this issue.
Can you go to the MA settings --> core tab and download the logfile there ?
Please attach it here so I can have a look. Please allow the server to start for 5 to 10 minutes before collecting the log

I was able to reproduce this issue on a complete fresh installation.
I'll prepare a fix for next release

This should be fixed in beta 92 please advise if not

After applying the new version  2.0.0b92 to the existing installation the players were still missing.
However, after I removed the MA addon and reinstalled the 2.0.0b92 addon from scratch my players reappeard on the players tab in the settings.
Therefore the issue has been solved.
Thank you very much!

I had the same problem. The only solution is to reinstall the MA addon.

First time install here, running 2.0.0b98 and I can't see any devices in groups.

This is fixed in beta 99

Excellent that worked thank you :)

This is happen to me on a fresh install of Music Assistant today,  I'm on a Odroid C4  cleared browser... restarted device..
nadda.

authors: Mustreg OzGav Smarthome-Creator charlesomer jimmythesnitch marcelveldt

repo: music-assistant/hass-music-assistant


text:
Tune-in don't show a favorites

I entered my email to retrieve my TUNE-IN  favorites, but it doesn't work

I entered my username (visible below your email when you check your account profile in the TuneIn website)

Yeah, I should probably make that more clear in the docs. Tune-In is kind of strict when it comes to that. You need your username indeed instead of your email.

I'm sorry, but entering the username and making the last update, the job remains in the background and displays nothing.
The profile set is public in my account.

what do you mean with "the job remains in the background" ? Did you wait long enough until the initial sync is done ? That could take a few minutes on large collections

yes, it remains for a few minutes as shown in the photo, then it remains empty

That is strange but I found out that the Tune-In structure is a bit strange...
Are you using the new library in Intune ? Music Assistant will (for now) only show items that are in your Tune-In library

I think so, the library are the favorites I have both in the phone app and in web access

Are you running version 1.0.13 of Music Assistant ?

yes, the lastest

May I ask your Tune In username ? Or send it to me as PM on discord.
The profile is public so I have a look what is special about it

how do i find you on discord

marcelveldt

Or the Music Assistant channel
https://discord.com/channels/753947050995089438/753947050995089442

in addition to your name I need the 4 numbers    #xxxx

0393

As discussed in discord you now see the TuneIn stations in MA.
I've just checked in a small fix for the buffer of radio stations which might also fix playback on Sonos devices.
If you have time, please test with the new 1.0.14 version. Thanks!

closing this as it was confirmed fixed by another user. If you still experience issues, please reopen this issue or create a new one. thanks!

@marcelveldt can you describe how you fixed this issue as I'm experiencing the same...
Thanks

@marcelveldt can you describe how you fixed this issue as I'm experiencing the same... Thanks

please open a new issue report, thanks!

authors: erkr lolouk44 marcelveldt stresserini


text:
bouncePreviewForDrawerSide doesn't pass completion block

bouncePreviewForDrawerSide passes nil to the completion block handler:
-(void)bouncePreviewForDrawerSide:(MMDrawerSide)drawerSide completion:(void(^)(BOOL finished))completion{
    NSParameterAssert(drawerSide!=MMDrawerSideNone);
    [self bouncePreviewForDrawerSide:drawerSide distance:MMDrawerDefaultBounceDistance completion:nil];
}

Got it, thanks.

authors: danmurrelljr eytanbiala

repo: mutualmobile/MMDrawerController


text:
Fixed Swift Package Manager Errors for v2

When integrating v2 via SPM, the current v2 branch has build errors that prevent any project from compiling. I've gone ahead and updated the deployment target for SPM and added some missing import statements. Now things should compile correctly.

@Sam-Spencer
Wow, thank you for a great contribution.
I put a comment, please check it.

oh, sorry. it's conflicted.
My other working branch broke this PR...

Fixed the conflicts! Things should work now :)

@Sam-Spencer
I got errors:
Fetching https://github.com/muukii/TransitionPatch.git
Fetching https://github.com/ReactiveX/RxSwift.git
Fetching https://github.com/VergeGroup/Verge.git
Cloning https://github.com/VergeGroup/Verge.git
Resolving https://github.com/VergeGroup/Verge.git at 8.8.0
Cloning https://github.com/ReactiveX/RxSwift.git
Resolving https://github.com/ReactiveX/RxSwift.git at 6.1.0
Cloning https://github.com/muukii/TransitionPatch.git
Resolving https://github.com/muukii/TransitionPatch.git at 1.0.3
error: the library 'PixelEngine' requires macos 10.10, but depends on the product 'Verge' which requires macos 10.12; consider changing the library 'PixelEngine' to require macos 10.12 or later, or the product 'Verge' to require macos 10.10 or earlier.
error: the library 'PixelEditor' requires macos 10.10, but depends on the product 'Verge' which requires macos 10.12; consider changing the library 'PixelEditor' to require macos 10.12 or later, or the product 'Verge' to require macos 10.10 or earlier.

It seems SwiftPM tried to build for macos.
How do we only build for iOS?

authors: Sam-Spencer muukii

repo: muukii/Pixel


text:
🛑 24go API is down

In 6c925f8, 24go API (https://api.24go.co/users/me) was down:

HTTP code: 502
Response time: 85 ms

Resolved: 24go API is back up in 34c5cdf after 17 minutes.

repo: muuvlabs-upptime/muuvlabs-upptime


text:
Add typesVersions in package.json

Thanks for adding exports declarations for EMS and CJS!  I was testing the v1.x version of this package in the sanity-plugin-mux-input plugin and TypeScript was having problems with import { ... } from 'media-chrome/react' which stemmed from problems with type resolution.
The solution I came across was adding in these typesVersions declarations which routes type resolution for react vs non-react imports to the expected files under dist to match what's declared under the exports field.

@cjpillsbury have you had a chance to take a look at this yet?  No rush, I'm just trying to figure out where it's at.

@jonabc hey just started doing some smoke testing this morning. Unfortunately, it's looking like we're going to need something a bit more complicated for the types. tl;dr - we'd want to fix this case without breaking our default type declaration file mappings for all valid dist module uses. E.g. - If you take a look at https://cdn.jsdelivr.net/npm/media-chrome@1.1.1/dist/ (for convenience of browsing the dist), you'll notice that we have per-module declaration files available. We also have different module "flavors" of these (e.g. ESM, CJS) for both React and base web components. I haven't dug deeply, but, given that we've introduced the more modern exports in our package (https://github.com/muxinc/media-chrome/blob/main/package.json#L13-L35), I think/hope we can take advantage of TypeScript's support of that (See, e.g.: https://www.typescriptlang.org/docs/handbook/esm-node.html#packagejson-exports-imports-and-self-referencing). I probably won't have time to experiment with this just yet, but if you were interested, we always love some community love. Feel free to follow up with any additional questions/comments/concerns!

but there is a validation rule on sanity studio plugins that requires moduleResolution to be set as node 😢

well that's unfortunate but also good to know with any potential solution.

had multiple incompatible changes that prevents something else from working 🤷

yeah this is the thread we're always needling/tightrope we're always walking. My quick smoke test was to try to target any of the non-default dist paths and see if typescript worked before vs. after your change, using our in-repo Next.JS + TypeScript example to do some very basic tests. Assuming I can peel away some time, I am definitely happy to help figure out/test a path forward

authors: cjpillsbury jonabc luwes

repo: muxinc/media-chrome


text:
Tool test triggering

/run-all-tool-tests

/run-all-tool-tests

/run-all-tool-tests

/run-all-tool-tests

/run-all-tool-tests

/run-all-tool-tests

/run-all-tool-tests

/run-all-tool-tests

/run-all-tool-tests

/run-all-tool-tests

/run-all-tool-tests

/run-all-tool-tests

Find all tool test results here

repo: mvdbeek/tools-iuc


text:
No Scrollbar in https://laravel-mix.com/docs/5.0 website's left sidebar menu

No Scrollbar in https://laravel-mix.com/docs/5.0 website's left sidebar menu

Please provide some more information such as OS, browser etc.

Having the same problem. Chrome 87 on macOS.

I don't see the need for a scrollbar if you can scroll the whole page.

The whole page scrolls but the menu is fixed so it gets cut off.

That's all I can see on every single page.

I see, seems to happen on smaller screens. Will re-open this issue and take a look as soon as I can.

authors: devbapidey geekish mvdnbrk


text:
Return information (like failed packages) from the initial START command - possible?

I'm not sure about the possibilities, and how different events are chained. I'm assuming something like this:

START boxstarter_script.Application
if not exists Boxstarter

Install Boxstarter

if not exists Chocolatey

Install Chocolatey

execute boxstarter_script.Application payload

execute Chocolatey in batch

Press ENTER to exit

Is it possible to communicate something back to the dotNET application that started the process?

Does the exit code from the START command relate to the success of Chocolatey?
Can we return more than the exit code?

Can we return the package id`s from the failed pacakges, so we can notify the host?

E.g. I could let WindowsRemix alert on these packages and only remove the succesfully installed ones from the queue.

I'll probably be releasing a beta version of the site in a couple of months. Some much needed stability fixes. If boxstarter could somehow communicate back in the same process, it would open up a lot of possibilities.

The click once URL is pretty limited. It's designed to simply invoke an app install and run. The best way to interact with boxstarter is to use the boxstarter powershell modules instead of the web launcher URL.

I can probably only do this through my ClickOnce helper for Chrome, since it's C#. Not sure I can do the same with Firefox. Probably not with Internet Explorer and Edge. Do you know anything about IE/Edge communicating with PS?
Also, can I run boxstarter posh modules by executing an .exe file? I think I can hook into rundll32.exe from Firefox.
I'd be interested to see if I can get some system information on the website this way, and possibly read/change some system settings through boxstarter.
Also, imagine I know nothing about boxstarter apart from how to batch-install packages. Do you know of any boxstarter module(s) for me to look at that might be relevant to my interests?
Sorry for the many questions.

Do you know anything about IE/Edge communicating with PS?

Afraid not.

can I run boxstarter posh modules by executing an .exe file?

You can invoke powershell.exe and import the boxstarter modules via the -command param or via a script file through -file

Thanks.

authors: Redsandro mwrock

repo: mwrock/boxstarter


text:
Cocoapods compiler issue

Hi, I'm using cocoapods for my library but when I try to do pod lib lint I get compiler error from a promise kit class, here is the log
** BUILD FAILED **

The following build commands failed:
CompileSwiftSources normal x86_64 com.apple.xcode.tools.swift.compiler
CompileSwift normal x86_64 /var/folders/mr/msg44lgs0gqg_2y508cl685w0000gn/T/CocoaPods/Lint/Pods/PromiseKit/Categories/Foundation/NSNotificationCenter+Promise.swift

her is my podspec
Pod::Spec.new do |s|
  s.name             = "ExpSwift"
  s.version          = "1.0.2"
  s.summary          = "Exp IOS SDK library. Native IOS library for EXP platform."

  s.description      = "Exp IOS SDK library. Native IOS library for EXP platform will allow you to   communicate directly to EXP platform."

  s.homepage         = "https://github.com/ScalaInc/exp-ios-sdk"
  # s.screenshots     = "www.example.com/screenshots_1", "www.example.com/screenshots_2"
  s.license          = 'MIT'
  s.author           = { "Cesar Oyarzun" => "cesar.oyarzun@scala.com" }
  s.source           = { :git => "https://github.com/ScalaInc/exp-ios-sdk.git", :tag => 'v1.0.2' }
  # s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'

  s.platform     = :ios, '8.0'
  s.requires_arc = true

  s.source_files = 'Pod/Classes/**/*'

  # s.public_header_files = 'Pod/Classes/**/*.h'
  # s.frameworks = 'UIKit', 'MapKit'
   s.dependency 'PromiseKit','3.0.0'
   s.dependency 'Alamofire','3.1.5'
   s.dependency 'Socket.IO-Client-Swift','4.1.2'
   s.dependency 'JSONWebToken','1.4.1'
 end

Dupes #415

authors: cesar-oyarzun-m mxcl

repo: mxcl/PromiseKit


text:
Insufficient emoji

None of our current copy includes emoji. We'll have to fix that some time.

Hi @mxsasha I'm an outreachy applicant. I would like to work on this issue.

repo: mxsasha/happinesspackets


text:
eslint-config-airbnb latest throws lint errors

As mentioned in #974, updating eslint-config-airbnb to latest throws many lint errors.
It would wonderful if someone with the time could research and correct these errors and open a PR.
Node 6.4.0
npm 3.10.6
Mac OS 10.11.6
Chrome 53.0.2785.101 (64-bit)
eslint-config-airbnb    10.0.1  →  11.0.0
Lint Errors:
~/react-bp/app/components/A/index.js
  11:5   error  Anchors must have content and the content must be accessible by a screen reader  jsx-a11y/anchor-has-content
  22:9   error  'href' PropType is defined but prop is never used                                react/no-unused-prop-types
  23:11  error  'target' PropType is defined but prop is never used                              react/no-unused-prop-types
  24:13  error  'children' PropType is defined but prop is never used                            react/no-unused-prop-types

~/react-bp/app/components/List/index.js
  30:3  error  Prop type `array` is forbidden  react/forbid-prop-types

~/react-bp/app/components/ListItem/index.js
  17:3  error  Prop type `any` is forbidden  react/forbid-prop-types

~/react-bp/app/components/Toggle/index.js
  32:3  error  Prop type `array` is forbidden   react/forbid-prop-types
  33:3  error  Prop type `object` is forbidden  react/forbid-prop-types

~/react-bp/app/components/ToggleOption/index.js
  18:3  error  Prop type `object` is forbidden  react/forbid-prop-types

~/react-bp/app/containers/LanguageProvider/index.js
  27:3  error  Prop type `object` is forbidden  react/forbid-prop-types

~/react-bp/app/containers/RepoListItem/index.js
  59:3  error  Prop type `object` is forbidden  react/forbid-prop-types

~/react-bp/internals/templates/homePage/homePage.js
  18:9  error  Expected 'this' to be used by class method 'render'  class-methods-use-this

~/react-bp/internals/templates/languageProvider/languageProvider.js
  27:3  error  Prop type `object` is forbidden  react/forbid-prop-types

~/react-bp/internals/templates/notFoundPage/notFoundPage.js
  18:9  error  Expected 'this' to be used by class method 'render'  class-methods-use-this

Done by the amazing @peter-mouland in

authors: gihrig mxstbr

repo: mxstbr/react-boilerplate


text:
🛑 Website Load Balancers is down

In 2b63a2c, Website Load Balancers ($WEB_SERVER) was down:

HTTP code: 522
Response time: 15401 ms

Resolved: Website Load Balancers is back up in f400dec.

repo: myavsuper/upptime


text:
support a simple ResultMap with one or more ResultMapping which isCompositeResult

when do a query with a ResultMap which has one or more ResultMapping which isCompositeResult is return true and nestedResultMapId is null will throw a exception with npe.
The ResultMap is build from a JavaBean class when use the Interceptor. the ResultMap struct is such as
<ResultMap id="...", javaType="...">
       <ResultMapping property="" column=""  javaType="...">
              <ResultMapping property="" column=""  javaType="...">
              </ResultMapping>
       </ResultMapping>
</ResultMap>

Thank you for the PR, @likly ,
Are you aware MyBatis has <association /> and <collection />?
If this really is a new feature, please add some tests.
And for us to review your PR, all existing tests must pass (the current version seems to break some).

No response.

authors: harawata likly


text:
Upgrade angular-bootstrap to 0.14.0

https://github.com/angular-ui/bootstrap/issues/4372
Uncaught TypeError: Cannot set property 'isOpen' of nulls @ ui-bootstrap-tpls.min.js:9q @ ui-bootstrap-tpls.min.js:9

Updated angular-bootstrap to 0.14.2. now getting following deprecated messages, Should update MyController GUI as recommended way
$tooltip is now deprecated. Use $uibTooltip instead.
angular.min.js:107 $modal is now deprecated. Use $uibModal instead.
angular.min.js:107 tooltip-popup is now deprecated. Use uib-tooltip-popup instead.

repo: mycontroller-org/mycontroller


text:
Are there session support?

Session objects is very useful to keep cookies between requests, like it http://docs.python-requests.org/en/latest/user/advanced/
How can I do it using httpotion?

There is no cookie handling in httpotion right now, you'd have to do it manually. No one built it yet, because the main use case is REST APIs, which don't use cookies.
Feel free to contribute though :-)

authors: myfreeweb robsonpeixoto

repo: myfreeweb/httpotion

license: unlicense


text:
switch from hub.docker.com to ghcr.io

Docker Hub is sunsetting is free organizations accounts, therefore migrate to github container registry.

We are happy to help you out if you want to own your data. We operate a Harbor-based container registry as a service that has many benefits over most of the other registries out there.
There are also features regarding containerized image distribution, that might be valuable too as well.

We are happy to help you out if you want to own your data. We operate a Harbor-based container registry as a service that has many benefits over most of the other registries out there.
There are also features regarding containerized image distribution, that might be valuable too as well.

Thanks for the kind offer. GHCR is more than sufficient for now.

@BlackReloaded PTAL

repo: myopenfactory/client


text:
🛑 LSU Enterprise is down

In 1965889, LSU Enterprise (https://lsu.ent.sirsi.net/client/en_US/lsu/search/results?te=) was down:

HTTP code: 0
Response time: 0 ms

Resolved: LSU Enterprise is back up in f8b0b55 after 27 minutes.

repo: myqua/LOUIS-upptime


text:
🛑 LSU-S Enterprise is down

In 89762e3, LSU-S Enterprise (https://lsus.ent.sirsi.net/client/en_US/lsus/search/results?te=) was down:

HTTP code: 503
Response time: 120 ms

Resolved: LSU-S Enterprise is back up in 7ffdedd after 15 minutes.


text:
Error executing a demo_part3.ipynb in Jupiter

I get this error when I execute demo_part3.ipynb in Jupiter.
My GPU is a GTX 1060 6GB VM.

ValueError                                Traceback (most recent call last)
Cell In[3], line 2
1 reference_speaker = 'resources/example_reference.mp3' # This is the voice you want to clone
----> 2 target_se, audio_name = se_extractor.get_se(reference_speaker, tone_color_converter, vad=False)
File ~/dev/OpenVoice/openvoice/se_extractor.py:146, in get_se(audio_path, vc_model, target_dir, vad)
144     wavs_folder = split_audio_vad(audio_path, target_dir=target_dir, audio_name=audio_name)
145 else:
--> 146     wavs_folder = split_audio_whisper(audio_path, target_dir=target_dir, audio_name=audio_name)
148 audio_segs = glob(f'{wavs_folder}/*.wav')
149 if len(audio_segs) == 0:
File ~/dev/OpenVoice/openvoice/se_extractor.py:22, in split_audio_whisper(audio_path, audio_name, target_dir)
20 global model
21 if model is None:
---> 22     model = WhisperModel(model_size, device="cuda", compute_type="float16")
23 audio = AudioSegment.from_file(audio_path)
24 max_len = len(audio)
File ~/.local/lib/python3.10/site-packages/faster_whisper/transcribe.py:128, in WhisperModel.init(self, model_size_or_path, device, device_index, compute_type, cpu_threads, num_workers, download_root, local_files_only)
121 else:
122     model_path = download_model(
123         model_size_or_path,
124         local_files_only=local_files_only,
125         cache_dir=download_root,
126     )
--> 128 self.model = ctranslate2.models.Whisper(
129     model_path,
130     device=device,
131     device_index=device_index,
132     compute_type=compute_type,
133     intra_threads=cpu_threads,
134     inter_threads=num_workers,
135 )
137 tokenizer_file = os.path.join(model_path, "tokenizer.json")
138 if os.path.isfile(tokenizer_file):
ValueError: Requested float16 compute type, but the target device or backend do not support efficient float16 computation.

Hi, did you manage to fix it?

I tried, but I gave up, unfortunately.

You need to open se_extractor.py and replace line 22 with
model = WhisperModel(model_size, device="cpu", compute_type="float32")
then restart the kernel

authors: SomeCodingUser razvanab

repo: myshell-ai/OpenVoice


text:
Ask for some methods to inspect the Request Headers

#### Summary
Ask for some methods to inspect the request headers. I want to implement a log saver which record the General Headers, Request Headers, and Response Headers, if it's a POST request, additional record the Request Payload, just like the logs Chrome Network Headers panel printed.
I can get some General Headers from put related fields together from the response data, and the Response Headers come from response headers, Request Payload from response config.data, but I don't find anyway to collect all the Request Headers. Wish a guide help me out.

In the browser you don't control all the headers being sent in a request, so that's hard to implement. You can infer some of them ('Accept-Language` for example) but you'd have to do it manually. Axios can only help you giving you the request headers configured in the request config.

authors: rubennorte zheeeng

repo: mzabriskie/axios


text:
Wiring Diagram from ESP to Rika Stove

Is it possible to post a wiring diagram, do I need a galvanic isolation or level Shifter between ESP and Rika Stove ?
Thank you for that

Thank for your interest in this project.
Currently i haven't done any test with the stove, so for now i would not recommend that you use it.
I will add a schema once I have tested and confirmed it's working.
As far as I know no galvanic isolation is not need, but some level shifter may be required as the original GSM module (similar to a TC35i) use a RS-232 interface.
I have seen both a direct connection and with a RS-232 to TTL adapter.
Here are some resources on which I have based my work
ruben-janssens/Rika-stove-GSM-modem-emulator
in french
forum post

I have updated the README with a wiring diagram, the diagram include a logic level shiffter but if your board is 5v tollerant it is not required. on my setup i use a max3232 rs232 to ttl converter.
let me know if it require more clarification

Hello,
My control board for the Rikaofen was broken, so the whole project was put on hold for me...
Have you already executed and tested your project?

Hi,
I have tested the project last winter and it worked as expected.
I used a RS-232 to TTL adapter but I would like to simplify things by using a level shifter instead.
My living room is under construction for the moment so I cannot test the new wiring.

authors: MAEThomas n-serrette


text:
implement missing details in hostinfo

Review TODOs and commented out pieces and implement them as needed, or remove if not.

All important pieces are done here, and we don't use hostinfo for much at the moment, so closing


text:
Introduce releases

Please consider adding tags and create version releases of this role.

Will be done with the release of BigBlueButton 2.3

Is done for BBB 2.2 on Xenial

authors: BrutalBirdie anadahz


text:
Feature Request: Create Docker Image for "production" use

Summary
This feature request proposes the creation and provision of an Docker image for phpvms. The introduction of an Docker image will streamline the setup process for users, offering a more convenient and standardized environment for running the software, alongside the existing development setup facilitated by Laravel Sail.
Context
Currently, phpvms supports two primary methods of setup:

Development environment using Laravel Sail.
Bare-metal setup as described in the project documentation.

While these methods are functional, the absence of an Docker image presents a barrier for users who prefer or require containerized environments for deployment and management. An Docker image would bridge this gap, enhancing the usability and adoption of phpvms.
Benefits

Ease of Setup: Users can quickly set up a phpvms environment without dealing with complex dependencies and configurations.
Consistency: The Docker image ensures a consistent environment across different machines and setups, reducing the "it works on my machine" problem.
Portability: Containerized environments can be easily moved across different systems, facilitating testing, development, and deployment.

Conclusion
Providing an Docker image for phpvms will significantly enhance the user experience by simplifying the setup process and providing a reliable, consistent, and portable environment for managing virtual airlines. This addition aligns with modern development and deployment practices, ensuring phpvms remains accessible and easy to use for a broader audience.

Yeah, a production composer and Dockerfile is needed. I can work on this sometime based on a couple that I use

Yes, that would definitely be a good idea. We might also consider FrankenPHP (https://frankenphp.dev/), which is based on Caddy and acts as a replacement for PHP-FPM. The Laravel integration seems quite simple (don't focus on the part with Laravel Octane).

Why not just use the official php-fpm or php-apache as base?

authors: Lapotor arthurpar06 nabeelio

repo: nabeelio/phpvms


text:
Allow multiple pilots per PIREP (shared cockpit)

Right now, only a single pilot can file a PIREP and he/she is the only one who gets credited (flight time, payout, location change etc). When flying with a shared cockpit, two pilots fly the same aircraft on the same route. Only one PIREP can be usefully filed (otherwise the flight would be accounted for multiple times) and only the filing pilot gets credited.
It would be nice if the PIREP could include an additional field to credit a second pilot for the flight. Right now this is not possible at all.

This is an interesting concept, would require some changes to the data model, but nothing terribly drastic.
Is there always a primary pilot and then a secondary? And would hours are counted equally to both, in terms of rank promotions, etc?

I would recommend to leave this as an option - there's always at least one pilot captain/primary, which is the one filing the PIREP. He/She is responsible for the overall flight or aircraft.
Additionally, there can be a second pilot (first officer). Adding even more pilots (check captains and thereabout) could be considered, but from my point of view likely unneccessary.
In terms of flight time, payment etc, I think both pilots should be credited equally. I haven't wrapped my head around promotions yet, but equal treatment seems to be a good option.

Right now, there's a pilot_id field, adding a copilot_id, so adding a single FO field isn't difficult, but once you get beyond that, it will require some more drastic changes to the data model, having a join table, and then associating all those pilots with it.
From an ACARS perspective, that makes it more complex, if two separate pilots are running ACARS, they both will do a separate prefile. I'm developing an ACARS for use with phpVMS, right now that's tied to the PF. How do you suppose to handle that use-case?

I think the PF would run the ACARs app (or like a RW situation, one pilot is assigned for communications). Then, maybe there is a field in the ACARS to add additional pilots, same as for a manual PIREP.

A single copilot field covers all common shared cockpit cases, so I'm fine with that.
For ACARS, an acceptable option would be to only have one pilot run the software - and when the ACARS submits the report, it tells the vms to credit the 'silent' pilot. Since both pilots are sitting in the exact same aircraft there's not much benefit to gain if both use ACARS - position data, route etc are precisely the same - except for a littlebit of realism.

Yeah, that's what I was thinking too. I'll consider this as part of 7.1, since it will require a bunch of changes, and I'm trying to get 7.0.0 out ASAP

Many thanks for considering this as a feature!

authors: GermanCoding nabeelio


text:
[Request] New Edge Renderers

Currently we have only a arrow edge render available, it would be nice to have any option such as Whisical's edges and some that follow this style.

I need this option as well.


text:
'999999-1-1' causes script to timeout

Linux - Chromium
I have a text field for the date picker on my form. I was seeing what happens when I manually enter a large year and I found out that I get an infinite loop after adding a year with six 9's.  There is no issue with your script disabled.   I can't figure out what is causing the loop.

I'm having this issue as well when entering "13/01/205555" on my site. The script is looping for a very long time between this and this. Maybe a sanity check of crazy day/month/year inputs is required before it tries to actually process them?

This is failing for me within the following function:
m: function(d, v) {
                        v -= 1;
                        while (v < 0) v += 12;
                        v %= 12;
                        d.setUTCMonth(v);
                        while (d.getUTCMonth() != v)
                            d.setUTCDate(d.getUTCDate() - 1);
                        return d;
                    },

d is an InvalidDate, so the while loop runs forever.

Simple solution
<input ..... maxlength="10"/>

authors: adrianpillinger arangas dsandstrom


text:
updated fastlane-core dependency

A project using xcov cannot install the latest version of fastlane 1.101.0 because of the hard dependency on fastlanecore.
A solution would be to update this dependency:
spec.add_dependency 'fastlane_core', '>= 0.44.0', '< 1.0.0'

Thank you @nakiostudio 👍

Hi @valeriomazzeo 👋
Thanks for reporting it! I've just merged #39 fixing this 🍻

authors: nakiostudio valeriomazzeo

repo: nakiostudio/xcov


text:
Nanoc doesn't change modification date in sitemap.xml

->  site-nanoc  % nanoc
Loading site… done
Compiling site…

Site compiled in 0.05s.
->  site-nanoc  % date -r content/campaigns.md # modification date
Wed Dec 21 11:11:04 MSK 2016
->  site-nanoc  % echo test >> content/campaigns.md
->  site-nanoc  % date -r content/campaigns.md # modification date
Mon Jan  2 19:49:00 MSK 2017
->  site-nanoc  % nanoc
Loading site… done
Compiling site…
      update  [0.04s]  output/campaigns/index.html

Site compiled in 0.09s.
->  site-nanoc  % cat content/sitemap.xml
<%= xml_sitemap(items: items.select { |i| i.path.end_with?('/') }) %>
->  site-nanoc  % grep -B 1 -A 2 campaigns output/sitemap.xml
  <url>
    <loc>https://buhusluga.spb.ru/campaigns/</loc>
    <lastmod>2016-12-21</lastmod>
  </url>
->  site-nanoc  % rm output/sitemap.xml
->  site-nanoc  % nanoc
Loading site… done
Compiling site…
      create  [0.01s]  output/sitemap.xml

Site compiled in 0.06s.
->  site-nanoc  % grep -B 1 -A 2 campaigns output/sitemap.xml
  <url>
    <loc>https://buhusluga.spb.ru/campaigns/</loc>
    <lastmod>2017-01-02</lastmod>
  </url>
->  site-nanoc  %

A fix is in #1046.

authors: anton-tsyganenko ddfreyne

repo: nanoc/nanoc


text:
format does not create a bootable disk

After an optimization, the service list and the 55AA signature are not copied to osbase. This behavior was relied upon by format. Here's a hexdump excerpt:
000001c0: 626f 6f74 4f53 004f 6f70 7300 0364 6972  bootOS.Oops..dir
000001d0: 777a 0666 6f72 6d61 748f 7a05 656e 7465  wz.format.z.ente
000001e0: 727f 7b03 6465 6c6b 7a03 7665 7220 7a00  r.{.delkz.ver z.
000001f0: 0000 0000 0000 0000 0000 0000 0000 0000  ................

Thanks for the report. I've solved it. 👍🏻

authors: NieDzejkob nanochess

repo: nanochess/bootOS


text:
Generate MSGTYPE definitions for UENUM fields

This causes MSGTYPE macros to generate for UENUM fields so that the enum types can be inferred by macro expansions.
Without this there seems to be no way to deduce the type name of an enum in a protobuf message field from the preprocessor.
This allows for macro constructions that automatically call the ENUMTYPE_name() functions generated by the enum_to_string feature.

I think it would be better to make this a separate ENUMTYPE define. The MSGTYPE macros are used in the PB_SUBMSG_INFO_x macros internally also, so it might be confusing to mix enums to the same list when they are accessed only by user code.
Also add ENUM to the list while you are it :)

Thanks!

authors: PetteriAimonen computer-whisperer

repo: nanopb/nanopb

license: Zlib


text:
Fix ca certificate issues in image

Without adding the cacert package only insecure connections would work. This also adds some additional logging that helped identify this issue (and will help identify future connectivity issues).

GitHub actions currently is having an incident, merging this now since it address an issue and is otherwise low risk.

repo: nanzhong/tstr


text:
Fix footer display

I did not notice before, but the recent pydata sphinx theme versions had unset our footer. I will send a PR later to fix the 0.5.0 docs in napari.github.io, but this fixes the immediate issues and changes the wording on the footer items as requested in #12 .

What do you think of Forum for image.sc and Ask a Q for Zulip?
Seems more natural?
Also, I recall there being some opposition to "Chat" due to connotations with AI chatbots.

We talked about it at the meeting and kinda decided on chat if I remember correctly? But yes, forum would be my first choice, I just followed the existing suggestions from the issue 😊

I'm ambivalent about the chat part, but rather strongly feel that image.sc should be labeled as forum.

I was the one with the concern about using chat, but I have actually revised that and am in favour as I think it's the option that makes most sense and is pretty unambiguous.
It's also totally different to how most chat bots are shown, with the little bubble in the right hand corner that inevitably makes some Clippy-like remark about helping you out.

I don't mind "ask a q" vs "forum" for image.sc, so I'm not gonna press merge. Since Peter feels strongly about Forum and it's shorter, let's go with that. I'm happy we got consensus on chat. 😊

Updated

authors: DragaDoncila jni melissawm psobolewskiPhD

repo: napari/napari-sphinx-theme


text:
Unified framework for keybindings

Currently, keybindings are implemented as a hodgepodge of handcrafted if-else statements, see e.g. https://github.com/napari/napari/pull/195/files#diff-347152977a8bc6500ffce60fc0e90a0dR653
What I envision is a yaml config file that maps keys to functions, as well as a description. Each layer comes with its own file, as well as the base viewer. When a layer is selected, its keybindings override base layer keybindings. I think probably viewer keybindings should be universal and not allowed to be overwritten, but that can be discussed. We should not allow multiple keybindings. mpl does this and gives no indication about what is happening (the keybinding triggers all associated events!).
When the keybinding '?' is pressed, we use some kind of temporary, transparent popup display of the keybindings, with the layer keybindings on top and other keybindings following it. The popup displays each bound key and its description from the config file.
Config files can be customised. Custom copies live in .config/napari and are loaded after the default copy.

Hopefully this will then make it easier to support #200

Hopefully this will then make it easier to support #200

and #212

Yes our framework should also allow attaching custom functions for mouse click, mouse press, mouse release, and mouse doubleclick

@jni , I think this is a great idea. In terms of features, I think this is a pretty high priority after #115 lands. I would even propose this is one of the last feature to add before circling back for testing/clean up of all of the awesome features that have been added thus far.
I like the idea of a mapping between events and functions. Were you thinking the main Viewer and each layer would have a dictionary where the keys are events and the values are the associated function? If we want to prevent overriding of the base Viewer key/event bindings, we can just check the Viewer dictionary first. We can also check for conflicts upon loading layers.
Do you think it's useful to allow the user to add/remove keybindings programmatically? One potential use case is if the user wants to add behavior around a common layer for a specific task (e.g., painting labels on data) and does not want to write over the layer key bindings config file. If we store the keybinding/function mapping in a dictionary, it should be fairly straightforward to add/change bindings. Of course the challenge is validating them.

@kevinyamauchi i think you mean #171 not #115 (also named dims refactor ...)
I really like the add_binding idea where a custom dictionary is passed - I think it is similar to the proposal from @gregjohnso described in #200

Ah yes, correct on both fronts, @sofroniewn ! This particular feature would be pretty useful for me, so let me know if I can help in any way. Looking forward to this!

This is close to completion - we now have a standard framework - but still need to move our own internal functions over to using it. Maybe @kne42 can address this next

with #444 we're now using the new keybinding system for our internal keybindings too

authors: gregjohnso jni kevinyamauchi sofroniewn

repo: napari/napari