apiVersion: v1 data: common.sh: IyEvYmluL2Jhc2gKIwojIENvcHlyaWdodCAyMDIyIFJlZCBIYXQgSW5jLgojCiMgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7IHlvdSBtYXkKIyBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbgojIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAojCiMgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIwojIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUCiMgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlCiMgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKIyB1bmRlciB0aGUgTGljZW5zZS4KCnNldCAtZQoKZnVuY3Rpb24gbWVyZ2VfY29uZmlnX2RpciB7CiAgICBlY2hvIG1lcmdlIGNvbmZpZyBkaXIgJDEKICAgIGZvciBjb25mIGluICQoZmluZCAkMSAtdHlwZSBmKTsgZG8KICAgICAgICBjb25mX2Jhc2U9JChiYXNlbmFtZSAkY29uZikKCiAgICAgICAgIyBJZiBDRkcgYWxyZWFkeSBleGlzdCBpbiAuLi9tZXJnZWQgYW5kIGlzIG5vdCBhIGpzb24gZmlsZSwKICAgICAgICAjIHdlIGV4cGVjdCBmb3Igbm93IGl0IGNhbiBiZSBtZXJnZWQgdXNpbmcgY3J1ZGluaS4KICAgICAgICAjIEVsc2UsIGp1c3QgY29weSB0aGUgZnVsbCBmaWxlLgogICAgICAgIGlmIFtbIC1mIC92YXIvbGliL2NvbmZpZy1kYXRhL21lcmdlZC8ke2NvbmZfYmFzZX0gJiYgJHtjb25mX2Jhc2V9ICE9ICouanNvbiBdXTsgdGhlbgogICAgICAgICAgICBlY2hvIG1lcmdpbmcgJHtjb25mfSBpbnRvIC92YXIvbGliL2NvbmZpZy1kYXRhL21lcmdlZC8ke2NvbmZfYmFzZX0KICAgICAgICAgICAgY3J1ZGluaSAtLW1lcmdlIC92YXIvbGliL2NvbmZpZy1kYXRhL21lcmdlZC8ke2NvbmZfYmFzZX0gPCAke2NvbmZ9CiAgICAgICAgZWxzZQogICAgICAgICAgICBlY2hvIGNvcHkgJHtjb25mfSB0byAvdmFyL2xpYi9jb25maWctZGF0YS9tZXJnZWQvCiAgICAgICAgICAgIGNwIC1mICR7Y29uZn0gL3Zhci9saWIvY29uZmlnLWRhdGEvbWVyZ2VkLwogICAgICAgIGZpCiAgICBkb25lCn0K init.sh: IyEvYmluLy9iYXNoCiMKIyBDb3B5cmlnaHQgMjAyMCBSZWQgSGF0IEluYy4KIwojIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOyB5b3UgbWF5CiMgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4KIyBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIwojICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiMKIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywgV0lUSE9VVAojIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZQojIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCiMgdW5kZXIgdGhlIExpY2Vuc2UuCnNldCAtZXgKCiMgVGhpcyBzY3JpcHQgZ2VuZXJhdGVzIHRoZSBvY3RhdmlhLmNvbmYvbG9nZ2luZy5jb25mIGZpbGUgYW5kCiMgY29waWVzIHRoZSByZXN1bHQgdG8gdGhlIGVwaGVtZXJhbCAvdmFyL2xpYi9jb25maWctZGF0YS9tZXJnZWQgdm9sdW1lLgoKU1ZDX0NGRz0vZXRjL29jdGF2aWEvb2N0YXZpYS5jb25mClNWQ19DRkdfTUVSR0VEPS92YXIvbGliL2NvbmZpZy1kYXRhL21lcmdlZC9vY3RhdmlhLmNvbmYKCiMgZXhwZWN0IHRoYXQgdGhlIGNvbW1vbi5zaCBpcyBpbiB0aGUgc2FtZSBkaXIgYXMgdGhlIGNhbGxpbmcgc2NyaXB0ClNDUklQVFBBVEg9IiQoIGNkICIkKGRpcm5hbWUgIiQwIikiID4vZGV2L251bGwgMj4mMSA7IHB3ZCAtUCApIgouICR7U0NSSVBUUEFUSH0vY29tbW9uLnNoIC0tc291cmNlLW9ubHkKCiMgQ29weSBkZWZhdWx0IHNlcnZpY2UgY29uZmlnIGZyb20gY29udGFpbmVyIGltYWdlIGFzIGJhc2UKY3AgLWEgJHtTVkNfQ0ZHfSAke1NWQ19DRkdfTUVSR0VEfQoKIyBNZXJnZSBhbGwgdGVtcGxhdGVzIGZyb20gY29uZmlnIENNCmZvciBkaXIgaW4gL3Zhci9saWIvY29uZmlnLWRhdGEvZGVmYXVsdDsgZG8KICAgIG1lcmdlX2NvbmZpZ19kaXIgJHtkaXJ9CmRvbmUKCiMgTmV0d29yayBjb25maWd1cmF0aW9uCmlmIFsgIiRNR01UX0NJRFIiICE9ICIiIF07IHRoZW4KICAgIC91c3IvbG9jYWwvYmluL2NvbnRhaW5lci1zY3JpcHRzL29jdGF2aWFfbWdtdF9zdWJuZXRfcm91dGUucHkgb2N0YXZpYSAiJE1HTVRfQ0lEUiIgIiRNR01UX0dBVEVXQVkiCmZpCgppZHg9MAp3aGlsZSB0cnVlOyBkbwogICAgdmFyX25hbWU9Ik1HTVRfQ0lEUiR7aWR4fSIKICAgIGNpZHI9IiR7IXZhcl9uYW1lfSIKICAgIGlmIFsgIiRjaWRyIiA9ICIiIF07IHRoZW4KICAgICAgICBicmVhawogICAgZmkKICAgIC91c3IvbG9jYWwvYmluL2NvbnRhaW5lci1zY3JpcHRzL29jdGF2aWFfbWdtdF9zdWJuZXRfcm91dGUucHkgb2N0YXZpYSAiJGNpZHIiICIkTUdNVF9HQVRFV0FZIgogICAgaWR4PSQoKGlkeCsxKSkKZG9uZQoKaWYgWyAiJDEiID0gIm9jdGF2aWEtaGVhbHRobWFuYWdlciIgXTsgdGhlbgogICAgL3Vzci9sb2NhbC9iaW4vY29udGFpbmVyLXNjcmlwdHMvc2V0aXBhbGlhcy5weSBvY3RhdmlhIGhtCiAgICAvdXNyL2xvY2FsL2Jpbi9jb250YWluZXItc2NyaXB0cy9vY3RhdmlhX2htX2FkdmVydGlzZW1lbnQucHkgb2N0YXZpYQpmaQoKIyBJZ25vcmUgcG9zc2libGUgZXJyb3JzCi91c3IvbG9jYWwvYmluL2NvbnRhaW5lci1zY3JpcHRzL29jdGF2aWFfc3RhdHVzLnB5IHx8IHRydWUK ip_advertisement.py: IyBDb3B5cmlnaHQgMjAyMCBSZWQgSGF0LCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsgeW91IG1heQojIG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluCiMgYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIwojIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUCiMgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlCiMgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKIyB1bmRlciB0aGUgTGljZW5zZS4KIwojIEFkYXB0ZWQgZnJvbSBvY3RhdmlhL2FtcGhvcmFlL2JhY2tlbmRzL3V0aWxzL2lwX2FkdmVydGlzZW1lbnQucHkKaW1wb3J0IGZjbnRsCmltcG9ydCBzb2NrZXQKaW1wb3J0IHN0cnVjdAoKZnJvbSBvc2xvX2xvZyBpbXBvcnQgbG9nIGFzIGxvZ2dpbmcKCmZyb20gb2N0YXZpYS5hbXBob3JhZS5iYWNrZW5kcy51dGlscyBpbXBvcnQgbmV0d29ya19uYW1lc3BhY2UKZnJvbSBvY3RhdmlhLmNvbW1vbiBpbXBvcnQgY29uc3RhbnRzCmZyb20gb2N0YXZpYS5jb21tb24gaW1wb3J0IHV0aWxzIGFzIGNvbW1vbl91dGlscwoKTE9HID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCgoKZGVmIGdhcnAoaW50ZXJmYWNlLCBpcF9hZGRyZXNzLCBuZXRfbnM9Tm9uZSk6CiAgICAiIiJTZW5kcyBhIGdyYXR1aXRvdXMgQVJQIGZvciBpcF9hZGRyZXNzIG9uIHRoZSBpbnRlcmZhY2UuCgogICAgOnBhcmFtIGludGVyZmFjZTogVGhlIGludGVyZmFjZSBuYW1lIHRvIHNlbmQgdGhlIEdBUlAgb24uCiAgICA6cGFyYW0gaXBfYWRkcmVzczogVGhlIElQIGFkZHJlc3MgdG8gYWR2ZXJ0aXNlIGluIHRoZSBHQVJQLgogICAgOnBhcmFtIG5ldF9uczogVGhlIG5ldHdvcmsgbmFtZXNwYWNlIHRvIHNlbmQgdGhlIEdBUlAgZnJvbS4KICAgIDpyZXR1cm5zOiBOb25lCiAgICAiIiIKICAgIEFSUF9FVEhFUlRZUEUgPSAweDA4MDYKICAgIEJST0FEQ0FTVF9NQUMgPSBiJ1x4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZicKCiAgICAjIEdldCBhIHNvY2tldCwgb3B0aW9uYWxseSBpbnNpZGUgYSBuZXR3b3JrIG5hbWVzcGFjZQogICAgZ2FycF9zb2NrZXQgPSBOb25lCiAgICBpZiBuZXRfbnM6CiAgICAgICAgd2l0aCBuZXR3b3JrX25hbWVzcGFjZS5OZXR3b3JrTmFtZXNwYWNlKG5ldF9ucyk6CiAgICAgICAgICAgIGdhcnBfc29ja2V0ID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfUEFDS0VULCBzb2NrZXQuU09DS19SQVcpCiAgICBlbHNlOgogICAgICAgIGdhcnBfc29ja2V0ID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfUEFDS0VULCBzb2NrZXQuU09DS19SQVcpCgogICAgIyBCaW5kIHRoZSBzb2NrZXQgd2l0aCB0aGUgQVJQIGV0aGVydHlwZSBwcm90b2NvbAogICAgZ2FycF9zb2NrZXQuYmluZCgoaW50ZXJmYWNlLCBBUlBfRVRIRVJUWVBFKSkKCiAgICAjIEdldCB0aGUgTUFDIGFkZHJlc3Mgb2YgdGhlIGludGVyZmFjZQogICAgc291cmNlX21hYyA9IGdhcnBfc29ja2V0LmdldHNvY2tuYW1lKClbNF0KCiAgICBnYXJwX21zZyA9IFsKICAgICAgICBzdHJ1Y3QucGFjaygnIWgnLCAxKSwgICAgICAgICAgICAgICAgICMgSGFyZHdhcmUgdHlwZSBldGhlcm5ldAogICAgICAgIHN0cnVjdC5wYWNrKCchaCcsIDB4MDgwMCksICAgICAgICAgICAgIyBQcm90b2NvbCB0eXBlIElQdjQKICAgICAgICBzdHJ1Y3QucGFjaygnIUInLCA2KSwgICAgICAgICAgICAgICAgICMgSGFyZHdhcmUgc2l6ZQogICAgICAgIHN0cnVjdC5wYWNrKCchQicsIDQpLCAgICAgICAgICAgICAgICAgIyBQcm90b2NvbCBzaXplCiAgICAgICAgc3RydWN0LnBhY2soJyFoJywgMSksICAgICAgICAgICAgICAgICAjIE9wY29kZSByZXF1ZXN0CiAgICAgICAgc291cmNlX21hYywgICAgICAgICAgICAgICAgICAgICMgU2VuZGVyIE1BQyBhZGRyZXNzCiAgICAgICAgc29ja2V0LmluZXRfYXRvbihpcF9hZGRyZXNzKSwgICMgU2VuZGVyIElQIGFkZHJlc3MKICAgICAgICBCUk9BRENBU1RfTUFDLCAgICAgICAgICAgICAgICAgIyBUYXJnZXQgTUFDIGFkZHJlc3MKICAgICAgICBzb2NrZXQuaW5ldF9hdG9uKGlwX2FkZHJlc3MpXSAgIyBUYXJnZXQgSVAgYWRkcmVzcwoKICAgIGdhcnBfZXRoZXJuZXQgPSBbCiAgICAgICAgQlJPQURDQVNUX01BQywgICAgICAgICAgICAgICMgRXRoZXJuZXQgZGVzdGluYXRpb24KICAgICAgICBzb3VyY2VfbWFjLCAgICAgICAgICAgICAgICAgIyBFdGhlcm5ldCBzb3VyY2UKICAgICAgICBzdHJ1Y3QucGFjaygnIWgnLCBBUlBfRVRIRVJUWVBFKSwgICMgRXRoZXJuZXQgdHlwZQogICAgICAgIGInJy5qb2luKGdhcnBfbXNnKV0gICAgICAgICAjIFRoZSBHQVJQIG1lc3NhZ2UKCiAgICBnYXJwX3NvY2tldC5zZW5kKGInJy5qb2luKGdhcnBfZXRoZXJuZXQpKQogICAgZ2FycF9zb2NrZXQuY2xvc2UoKQoKCmRlZiBjYWxjdWxhdGVfaWNtcHY2X2NoZWNrc3VtKHBhY2tldCk6CiAgICAiIiJDYWxjdWxhdGUgdGhlIElDTVB2NiBjaGVja3N1bSBmb3IgYSBwYWNrZXQuCgogICAgOnBhcmFtIHBhY2tldDogVGhlIHBhY2tldCBieXRlcyB0byBjaGVja3N1bS4KICAgIDpyZXR1cm5zOiBUaGUgY2hlY2tzdW0gaW50ZWdlci4KICAgICIiIgogICAgdG90YWwgPSAwCgogICAgIyBBZGQgdXAgMTYtYml0IHdvcmRzCiAgICBudW1fd29yZHMgPSBsZW4ocGFja2V0KSAvLyAyCiAgICBmb3IgY2h1bmsgaW4gc3RydWN0LnVucGFjayhmIiF7bnVtX3dvcmRzfUgiLCBwYWNrZXRbMDpudW1fd29yZHMgKiAyXSk6CiAgICAgICAgdG90YWwgKz0gY2h1bmsKCiAgICAjIEFkZCBhbnkgbGVmdCBvdmVyIGJ5dGUKICAgIGlmIGxlbihwYWNrZXQpICUgMjoKICAgICAgICB0b3RhbCArPSBwYWNrZXRbLTFdIDw8IDgKCiAgICAjIEZvbGQgMzItYml0cyBpbnRvIDE2LWJpdHMKICAgIHRvdGFsID0gKHRvdGFsID4+IDE2KSArICh0b3RhbCAmIDB4ZmZmZikKICAgIHRvdGFsICs9IHRvdGFsID4+IDE2CiAgICByZXR1cm4gfnRvdGFsICsgMHgxMDAwMCAmIDB4ZmZmZgoKCmRlZiBuZWlnaGJvcl9hZHZlcnRpc2VtZW50KGludGVyZmFjZSwgaXBfYWRkcmVzcywgbmV0X25zPU5vbmUpOgogICAgIiIiU2VuZHMgYSB1bnNvbGljaXRlZCBuZWlnaGJvciBhZHZlcnRpc2VtZW50IGZvciBhbiBpcCBvbiB0aGUgaW50ZXJmYWNlLgoKICAgIDpwYXJhbSBpbnRlcmZhY2U6IFRoZSBpbnRlcmZhY2UgbmFtZSB0byBzZW5kIHRoZSBHQVJQIG9uLgogICAgOnBhcmFtIGlwX2FkZHJlc3M6IFRoZSBJUCBhZGRyZXNzIHRvIGFkdmVydGlzZSBpbiB0aGUgR0FSUC4KICAgIDpwYXJhbSBuZXRfbnM6IFRoZSBuZXR3b3JrIG5hbWVzcGFjZSB0byBzZW5kIHRoZSBHQVJQIGZyb20uCiAgICA6cmV0dXJuczogTm9uZQogICAgIiIiCiAgICBBTExfTk9ERVNfQUREUiA9ICdmZjAyOjoxJwogICAgU0lPQ0dJRkhXQUREUiA9IDB4ODkyNwoKICAgICMgR2V0IGEgc29ja2V0LCBvcHRpb25hbGx5IGluc2lkZSBhIG5ldHdvcmsgbmFtZXNwYWNlCiAgICBuYV9zb2NrZXQgPSBOb25lCiAgICBpZiBuZXRfbnM6CiAgICAgICAgd2l0aCBuZXR3b3JrX25hbWVzcGFjZS5OZXR3b3JrTmFtZXNwYWNlKG5ldF9ucyk6CiAgICAgICAgICAgIG5hX3NvY2tldCA9IHNvY2tldC5zb2NrZXQoCiAgICAgICAgICAgICAgICBzb2NrZXQuQUZfSU5FVDYsIHNvY2tldC5TT0NLX1JBVywKICAgICAgICAgICAgICAgIHNvY2tldC5nZXRwcm90b2J5bmFtZShjb25zdGFudHMuSVBWNl9JQ01QKSkKICAgIGVsc2U6CiAgICAgICAgbmFfc29ja2V0ID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVDYsIHNvY2tldC5TT0NLX1JBVywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5nZXRwcm90b2J5bmFtZShjb25zdGFudHMuSVBWNl9JQ01QKSkKCiAgICAjIFBlciBSRkMgNDg2MSBzZWN0aW9uIDQuNCwgdGhlIGhvcCBsaW1pdCBzaG91bGQgYmUgMjU1CiAgICBuYV9zb2NrZXQuc2V0c29ja29wdChzb2NrZXQuSVBQUk9UT19JUFY2LCBzb2NrZXQuSVBWNl9NVUxUSUNBU1RfSE9QUywgMjU1KQoKICAgICMgVE9ETyhndGhpZW1vbmdlKSB0aGlzIGxpbmUgaXMgc3BlY2lmaWMgZm9yIHRoZSBvY3RhdmlhLW9wZXJhdG9yCiAgICAjIFRoZSBvcmlnaW5hbCBmdW5jdGlvbiBkaWRuJ3Qgc2VlbSB0byBzZW5kIHRoZSBwYWNrZXRzIG9uIHRoZSByaWdodAogICAgIyBpbnRlcmZhY2UKICAgIG5hX3NvY2tldC5zZXRzb2Nrb3B0KHNvY2tldC5TT0xfU09DS0VULCAyNSwgYnl0ZXMoaW50ZXJmYWNlLCAnYXNjaWknKSkKCiAgICAjIEJpbmQgdGhlIHNvY2tldCB3aXRoIHRoZSBzb3VyY2UgYWRkcmVzcwogICAgbmFfc29ja2V0LmJpbmQoKGlwX2FkZHJlc3MsIDApKQoKICAgICMgR2V0IHRoZSBieXRlIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBNQUMgYWRkcmVzcyBvZiB0aGUgaW50ZXJmYWNlCiAgICAjIE5vdGU6IFlvdSBjYW4ndCB1c2UgZ2V0c29ja25hbWUoKSB0byBnZXQgdGhlIE1BQyBvbiB0aGlzIHR5cGUgb2Ygc29ja2V0CiAgICBzb3VyY2VfbWFjID0gZmNudGwuaW9jdGwoCiAgICAgICAgbmFfc29ja2V0LmZpbGVubygpLCBTSU9DR0lGSFdBRERSLCBzdHJ1Y3QucGFjaygKICAgICAgICAgICAgJzI1NnMnLCBieXRlcyhpbnRlcmZhY2UsICd1dGYtOCcpKSlbMTg6MjRdCgogICAgIyBHZXQgdGhlIGJ5dGUgcmVwcmVzZW50YXRpb24gb2YgdGhlIHNvdXJjZSBJUCBhZGRyZXNzCiAgICBzb3VyY2VfaXBfYnl0ZXMgPSBzb2NrZXQuaW5ldF9wdG9uKHNvY2tldC5BRl9JTkVUNiwgaXBfYWRkcmVzcykKCiAgICBpY21wdjZfbmFfbXNnX3ByZWZpeCA9IFsKICAgICAgICBzdHJ1Y3QucGFjaygnIUInLCAxMzYpLCAgICMgSUNNUCBUeXBlIE5laWdoYm9yIEFkdmVydGlzZW1lbnQKICAgICAgICBzdHJ1Y3QucGFjaygnIUInLCAwKV0gICAgICMgSUNNUCBDb2RlCiAgICBpY21wdjZfbmFfbXNnX3Bvc3RmaXggPSBbCiAgICAgICAgc3RydWN0LnBhY2soJyFJJywgMHhhMDAwMDAwMCksICAjIEZsYWdzIChSb3V0ZXIsIE92ZXJyaWRlKQogICAgICAgIHNvdXJjZV9pcF9ieXRlcywgICAgICAgICAjIFRhcmdldCBhZGRyZXNzCiAgICAgICAgc3RydWN0LnBhY2soJyFCJywgMiksICAgICMgSUNNUHY2IG9wdGlvbiB0eXBlIHRhcmdldCBsaW5rLWxheWVyIGFkZHJlc3MKICAgICAgICBzdHJ1Y3QucGFjaygnIUInLCAxKSwgICAgIyBJQ01QdjYgb3B0aW9uIGxlbmd0aAogICAgICAgIHNvdXJjZV9tYWNdICAgICAgICAgICAgICAjIElDTVB2NiBvcHRpb24gbGluay1sYXllciBhZGRyZXNzCgogICAgIyBDYWxjdWxhdGUgdGhlIElDTVB2NiBjaGVja3N1bQogICAgaWNtcHY2X3BzZXVkb19oZWFkZXIgPSBbCiAgICAgICAgc291cmNlX2lwX2J5dGVzLCAgICAgICAgICMgU291cmNlIElQIGFkZHJlc3MKICAgICAgICBzb2NrZXQuaW5ldF9wdG9uKHNvY2tldC5BRl9JTkVUNiwgQUxMX05PREVTX0FERFIpLCAgIyBEZXN0aW5hdGlvbiBJUAogICAgICAgIHN0cnVjdC5wYWNrKCchSScsIDU4KSwgICAjIElQdjYgbmV4dCBoZWFkZXIgKElDTVB2NikKICAgICAgICBzdHJ1Y3QucGFjaygnIWgnLCAzMildICAgIyBJUHY2IHBheWxvYWQgbGVuZ3RoCiAgICBpY21wdjZfdG1wX2Noa3N1bSA9IHN0cnVjdC5wYWNrKCchSCcsIDApICAjIENoZWNrc3VtLT56ZXJvcyBmb3IgY2FsY3VsYXRpb24KICAgIHRtcF9jaGtzdW1fbXNnID0gYicnLmpvaW4oaWNtcHY2X3BzZXVkb19oZWFkZXIgKyBpY21wdjZfbmFfbXNnX3ByZWZpeCArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpY21wdjZfdG1wX2Noa3N1bV0gKyBpY21wdjZfcHNldWRvX2hlYWRlcikKICAgIGNoZWNrc3VtID0gc3RydWN0LnBhY2soJyFIJywgY2FsY3VsYXRlX2ljbXB2Nl9jaGVja3N1bSh0bXBfY2hrc3VtX21zZykpCgogICAgIyBCdWlsZCB0aGUgSUNNUHY2IHVuc29saWNpdGF0ZWQgbmVpZ2hib3IgYWR2ZXJ0aXNlbWVudAogICAgaWNtcHY2X21zZyA9IGInJy5qb2luKGljbXB2Nl9uYV9tc2dfcHJlZml4ICsgW2NoZWNrc3VtXSArCiAgICAgICAgICAgICAgICAgICAgICAgICAgaWNtcHY2X25hX21zZ19wb3N0Zml4KQoKICAgIG5hX3NvY2tldC5zZW5kdG8oaWNtcHY2X21zZywgKEFMTF9OT0RFU19BRERSLCAwLCAwLCAwKSkKICAgIG5hX3NvY2tldC5jbG9zZSgpCgoKZGVmIHNlbmRfaXBfYWR2ZXJ0aXNlbWVudChpbnRlcmZhY2UsIGlwX2FkZHJlc3MsIG5ldF9ucz1Ob25lKToKICAgICIiIlNlbmQgYW4gYWRkcmVzcyBhZHZlcnRpc2VtZW50LgoKICAgIFRoaXMgbWV0aG9kIHdpbGwgc2VuZCBlaXRoZXIgR0FSUCAoSVB2NCkgb3IgbmVpZ2hib3IgYWR2ZXJ0aXNlbWVudHMgKElQdjYpCiAgICBmb3IgdGhlIGlwIGFkZHJlc3Mgc3BlY2lmaWVkLgoKICAgIDpwYXJhbSBpbnRlcmZhY2U6IFRoZSBpbnRlcmZhY2UgbmFtZSB0byBzZW5kIHRoZSBhZHZlcnRpc2VtZW50IG9uLgogICAgOnBhcmFtIGlwX2FkZHJlc3M6IFRoZSBJUCBhZGRyZXNzIHRvIGFkdmVydGlzZS4KICAgIDpwYXJhbSBuZXRfbnM6IFRoZSBuZXR3b3JrIG5hbWVzcGFjZSB0byBzZW5kIHRoZSBhZHZlcnRpc2VtZW50IGZyb20uCiAgICA6cmV0dXJuczogTm9uZQogICAgIiIiCiAgICB0cnk6CiAgICAgICAgaWYgY29tbW9uX3V0aWxzLmlzX2lwdjQoaXBfYWRkcmVzcyk6CiAgICAgICAgICAgIGdhcnAoaW50ZXJmYWNlLCBpcF9hZGRyZXNzLCBuZXRfbnMpCiAgICAgICAgZWxpZiBjb21tb25fdXRpbHMuaXNfaXB2NihpcF9hZGRyZXNzKToKICAgICAgICAgICAgbmVpZ2hib3JfYWR2ZXJ0aXNlbWVudChpbnRlcmZhY2UsIGlwX2FkZHJlc3MsIG5ldF9ucykKICAgICAgICBlbHNlOgogICAgICAgICAgICBMT0cuZXJyb3IoJ1Vua25vd24gSVAgdmVyc2lvbiBmb3IgYWRkcmVzczogIiVzIi4gU2tpcHBpbmcnLAogICAgICAgICAgICAgICAgICAgICAgaXBfYWRkcmVzcykKICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICBMT0cud2FybmluZygnVW5hYmxlIHRvIHNlbmQgYWRkcmVzcyBhZHZlcnRpc2VtZW50IGZvciBhZGRyZXNzOiAiJXMiLCAnCiAgICAgICAgICAgICAgICAgICAgJ2Vycm9yOiAlcy4gU2tpcHBpbmcnLCBpcF9hZGRyZXNzLCBzdHIoZSkpCg== octavia_controller_start.sh: IyEvYmluL2Jhc2gKIwojIENvcHlyaWdodCAyMDI0IFJlZCBIYXQgSW5jLgojCiMgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7IHlvdSBtYXkKIyBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiBZb3UgbWF5IG9idGFpbgojIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAojCiMgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKIwojIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUCiMgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiBTZWUgdGhlCiMgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKIyB1bmRlciB0aGUgTGljZW5zZS4Kc2V0IC1leAoKZXhlYyAvdXNyL2Jpbi8kMSAtLWNvbmZpZy1maWxlIC91c3Ivc2hhcmUvb2N0YXZpYS9vY3RhdmlhLWRpc3QuY29uZiAtLWNvbmZpZy1maWxlIC9ldGMvb2N0YXZpYS9vY3RhdmlhLmNvbmYgLS1jb25maWctZGlyIC9ldGMvb2N0YXZpYS9vY3RhdmlhLmNvbmYuZC8K octavia_hm_advertisement.py: IyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwojCiMgQ29weXJpZ2h0IDIwMjQgUmVkIEhhdCBJbmMuCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsgeW91IG1heQojIG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluCiMgYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAojCiMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQojIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQKIyBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUKIyBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucwojIHVuZGVyIHRoZSBMaWNlbnNlLgoKaW1wb3J0IHN5cwppbXBvcnQgc29ja2V0Cgpmcm9tIHB5cm91dGUyIGltcG9ydCBJUFJvdXRlCgppbXBvcnQgaXBfYWR2ZXJ0aXNlbWVudCBhcyBpcF9hZHYKCnRyeToKICAgIGludGVyZmFjZV9uYW1lID0gc3lzLmFyZ3ZbMV0KZXhjZXB0IEluZGV4RXJyb3I6CiAgICBwcmludChmInVzYWdlOiB7c3lzLmFyZ3ZbMF19IDxpbnRlcmZhY2VfbmFtZT4iKQogICAgc3lzLmV4aXQoMSkKCmlwID0gSVBSb3V0ZSgpCgp0cnk6CiAgICBpZHggPSBpcC5saW5rX2xvb2t1cChpZm5hbWU9aW50ZXJmYWNlX25hbWUpWzBdCmV4Y2VwdCBJbmRleEVycm9yOgogICAgcHJpbnQoZiJDYW5ub3QgZmluZCBpbnRlcmZhY2UgJ3tpbnRlcmZhY2VfbmFtZX0nLCBza2lwcGluZyIpCiAgICBzeXMuZXhpdCgwKQoKYWRkcnMgPSBpcC5nZXRfYWRkcihpbmRleD1pZHgpCmlwX2FkZHJzID0gWwogICAgZGljdChhZGRyWydhdHRycyddKVsnSUZBX0FERFJFU1MnXQogICAgZm9yIGFkZHIgaW4gYWRkcnNdCgpmb3IgaXBfYWRkciBpbiBpcF9hZGRyczoKICAgIHRyeToKICAgICAgICBpcF9hZHYuc2VuZF9pcF9hZHZlcnRpc2VtZW50KGludGVyZmFjZV9uYW1lLCBpcF9hZGRyKQogICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgIHByaW50KGYiQ2Fubm90IHNlbmQgSVAgYWR2ZXJ0aXNlbWVudDoge2V9IikK octavia_mgmt_subnet_route.py: IyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwojCiMgQ29weXJpZ2h0IDIwMjQgUmVkIEhhdCBJbmMuCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsgeW91IG1heQojIG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluCiMgYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAojCiMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQojIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQKIyBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUKIyBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucwojIHVuZGVyIHRoZSBMaWNlbnNlLgoKaW1wb3J0IHN5cwppbXBvcnQgc29ja2V0Cgpmcm9tIHB5cm91dGUyIGltcG9ydCBJUFJvdXRlCgp0cnk6CiAgICBpbnRlcmZhY2VfbmFtZSA9IHN5cy5hcmd2WzFdCiAgICBkc3QgPSBzeXMuYXJndlsyXQogICAgZ2F0ZXdheSA9IHN5cy5hcmd2WzNdCmV4Y2VwdCBJbmRleEVycm9yOgogICAgcHJpbnQoZiJ1c2FnZToge3N5cy5hcmd2WzBdfSA8aW50ZXJmYWNlX25hbWU+IDxkc3Q+IDxnYXRld2F5PiIpCiAgICBzeXMuZXhpdCgxKQoKaXAgPSBJUFJvdXRlKCkKCnRyeToKICAgIGlkeCA9IGlwLmxpbmtfbG9va3VwKGlmbmFtZT1pbnRlcmZhY2VfbmFtZSlbMF0KZXhjZXB0IEluZGV4RXJyb3I6CiAgICBwcmludChmIkNhbm5vdCBmaW5kIGludGVyZmFjZSAne2ludGVyZmFjZV9uYW1lfScsIHNraXBwaW5nIikKICAgIHN5cy5leGl0KDApCgp0cnk6CiAgICBpcC5yb3V0ZSgnYWRkJywgaW5kZXg9aWR4LCBkc3Q9ZHN0LCBnYXRld2F5PWdhdGV3YXkpCmV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgIHByaW50KGYiQ2Fubm90IHNldCByb3V0ZSB7ZHN0fSB2aWEge2dhdGV3YXl9OiB7ZX0iKQo= octavia_status.py: IyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwojCiMgQ29weXJpZ2h0IDIwMjQgUmVkIEhhdCBJbmMuCiMKIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsgeW91IG1heQojIG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluCiMgYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAojCiMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQojIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQKIyBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUKIyBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucwojIHVuZGVyIHRoZSBMaWNlbnNlLgoKZnJvbSBweXJvdXRlMiBpbXBvcnQgSVBSb3V0ZQoKaXAgPSBJUFJvdXRlKCkKCmlmYWNlcyA9IHt9Cgpmb3IgbGluayBpbiBpcC5nZXRfbGlua3MoKToKICAgIGF0dHJzID0ge2s6IHYgZm9yIGssIHYgaW4gbGlua1snYXR0cnMnXX0KICAgIGlmYWNlc1tsaW5rWydpbmRleCddXSA9IGF0dHJzWydJRkxBX0lGTkFNRSddCgpmb3IgYWRkciBpbiBpcC5nZXRfYWRkcigpOgogICAgYXR0cnMgPSB7azogdiBmb3IgaywgdiBpbiBhZGRyWydhdHRycyddfQogICAgcHJpbnQoZiJhZGRyIHthdHRyc1snSUZBX0FERFJFU1MnXX0ve2FkZHJbJ3ByZWZpeGxlbiddfSAiCiAgICAgICAgICBmImRldiB7aWZhY2VzW2FkZHJbJ2luZGV4J11dfSIpCgpmb3Igcm91dGUgaW4gaXAuZ2V0X3JvdXRlcygpOgogICAgYXR0cnMgPSB7azogdiBmb3IgaywgdiBpbiByb3V0ZVsnYXR0cnMnXX0KICAgIGlmIGF0dHJzWydSVEFfVEFCTEUnXSAhPSAyNTQ6CiAgICAgICAgY29udGludWUKICAgIHN1ZmZpeCA9IGYiL3tyb3V0ZVsnZHN0X2xlbiddfSIgaWYgcm91dGVbJ2RzdF9sZW4nXSBlbHNlICIiCiAgICByb3V0ZV9zdHIgPSBmInJvdXRlIHthdHRycy5nZXQoJ1JUQV9EU1QnLCAnZGVmYXVsdCcpfXtzdWZmaXh9ICIKICAgIGlmIGF0dHJzLmdldCgnUlRBX0dBVEVXQVknKToKICAgICAgICByb3V0ZV9zdHIgKz0gZiJ2aWEge2F0dHJzLmdldCgnUlRBX0dBVEVXQVknKX0gIgogICAgcm91dGVfc3RyICs9IGYiZGV2IHtpZmFjZXNbYXR0cnNbJ1JUQV9PSUYnXV19ICIKICAgIGlmIGF0dHJzLmdldCgnUlRBX1BSRUZTUkMnKToKICAgICAgICBzdWZmaXggPSBmIi97cm91dGVbJ3NyY19sZW4nXX0iIGlmIHJvdXRlWydzcmNfbGVuJ10gZWxzZSAiIgogICAgICAgIHJvdXRlX3N0ciArPSBmInByZWZzcmMge2F0dHJzLmdldCgnUlRBX1BSRUZTUkMnKX17c3VmZml4fSAiCgogICAgcHJpbnQocm91dGVfc3RyKQo= setipalias.py: IyEvdXNyL2Jpbi9weXRob24zCmltcG9ydCBzeXMKaW1wb3J0IG9zCmltcG9ydCBpcGFkZHJlc3MKaW1wb3J0IG5ldGlmYWNlcwpmcm9tIHB5cm91dGUyIGltcG9ydCBJUFJvdXRlCgp0cnk6CiAgICBpbnRlcmZhY2VfbmFtZSA9IHN5cy5hcmd2WzFdCiAgICBub2RlX3R5cGUgPSBzeXMuYXJndlsyXQpleGNlcHQgSW5kZXhFcnJvcjoKICAgIHByaW50KGYidXNhZ2U6IHtzeXMuYXJndlswXX0gPGludGVyZmFjZV9uYW1lPiBbaG18cnN5c2xvZ10iKQogICAgc3lzLmV4aXQoMSkKCiMgVGhlIGZpbGUgY29udGFpbmluZyBvdXIgSVAgYWxpYXMgaGFzIHRoZSB3b3JrZXIgbm9kZSBuYW1lIGZvcgojIGEgZmlsZW5hbWUuCm5vZGVfbmFtZV9lbnYgPSBvcy5lbnZpcm9uLmdldCgnTk9ERV9OQU1FJykuc3RyaXAoKQppZiBub3Qgbm9kZV9uYW1lX2VudjoKICAgIHByaW50KCJOT0RFX05BTUUgbm90IHNldCIpCiAgICBzeXMuZXhpdCgxKQoKbm9kZWZpbGUgPSBmIntub2RlX3R5cGV9X3tub2RlX25hbWVfZW52fSIKZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4oJy92YXIvbGliL2htcG9ydHMnLCBub2RlZmlsZSkKaWYgbm90IG9zLnBhdGguZXhpc3RzKGZpbGVuYW1lKToKICAgIHByaW50KGYiUmVxdWlyZWQgYWxpYXMgYWRkcmVzcyBmaWxlIHtmaWxlbmFtZX0gZG9lcyBub3QgZXhpc3QiKQogICAgc3lzLmV4aXQoMSkKCmlwID0gSVBSb3V0ZSgpCm9jdGF2aWFfaW50ZXJmYWNlID0gaXAubGlua19sb29rdXAoaWZuYW1lPWludGVyZmFjZV9uYW1lKQoKaWYgbm90IGxlbihvY3RhdmlhX2ludGVyZmFjZSk6CiAgICBwcmludCgnb2N0YXZpYSBuZXR3b3JrIGF0dGFjaG1lbnQgbm90IHByZXNlbnQnKQogICAgc3lzLmV4aXQoMSkKCmlwZmlsZSA9IG9wZW4oZmlsZW5hbWUsICJyIikKaXBhZGRyID0gaXBmaWxlLnJlYWQoKQppcGZpbGUuY2xvc2UoKQppZiBpcGFkZHI6CiAgICAjIEdldCBvdXIgY3VycmVudCBhZGRyZXNzZXMgc28gd2UgY2FuIGF2b2lkIHRyeWluZyB0byBzZXQgdGhlCiAgICAjIHNhbWUgYWRkcmVzcyBhZ2Fpbi4KICAgIHZlcnNpb24gPSBpcGFkZHJlc3MuaXBfYWRkcmVzcyhpcGFkZHIpLnZlcnNpb24KICAgIGlmYWNlaW5mbyA9IG5ldGlmYWNlcy5pZmFkZHJlc3NlcyhpbnRlcmZhY2VfbmFtZSlbCiAgICAgICAgbmV0aWZhY2VzLkFGX0lORVQgaWYgdmVyc2lvbiA9PSA0IGVsc2UgbmV0aWZhY2VzLkFGX0lORVQ2XQogICAgY3VycmVudF9hZGRyZXNzZXMgPSBbeFsnYWRkciddIGZvciB4IGluIGlmYWNlaW5mb10KICAgIGlmIGlwYWRkciBub3QgaW4gY3VycmVudF9hZGRyZXNzZXM6CiAgICAgICAgbWFza192YWx1ZSA9IDMyCiAgICAgICAgaWYgdmVyc2lvbiA9PSA2OgogICAgICAgICAgICBtYXNrX3ZhbHVlID0gMTI4CiAgICAgICAgaXAuYWRkcignYWRkJywgaW5kZXggPSBvY3RhdmlhX2ludGVyZmFjZVswXSwgYWRkcmVzcz1pcGFkZHIsIG1hc2s9bWFza192YWx1ZSkKaXAuY2xvc2UoKQo= kind: Secret metadata: creationTimestamp: '2025-10-11T11:04:10Z' labels: octavia-housekeeping.openstack.org/name: octavia-housekeeping octavia-housekeeping.openstack.org/namespace: openstack octavia-housekeeping.openstack.org/uid: fb35ce50-4669-4852-b8f9-ab5ca48dedf4 name: octavia-housekeeping-scripts namespace: openstack ownerReferences: - apiVersion: octavia.openstack.org/v1beta1 blockOwnerDeletion: true controller: true kind: OctaviaAmphoraController name: octavia-housekeeping uid: fb35ce50-4669-4852-b8f9-ab5ca48dedf4 resourceVersion: '50965' uid: 39b15664-b1d2-4b06-a696-9368a905c6a9 type: Opaque