From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: [PATCH i-g-t v4 4/7] lib/igt_kms: Rework connector properties to be more atomic, v2. Date: Fri, 29 Sep 2017 11:59:34 +0200 Message-ID: <20170929095937.15702-5-maarten.lankhorst@linux.intel.com> References: <20170929095937.15702-1-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mblankhorst.nl (mblankhorst.nl [IPv6:2a02:2308::216:3eff:fe92:dfa3]) by gabe.freedesktop.org (Postfix) with ESMTPS id 88EC56EAA4 for ; Fri, 29 Sep 2017 09:59:41 +0000 (UTC) In-Reply-To: <20170929095937.15702-1-maarten.lankhorst@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org SW4gdGhlIGZ1dHVyZSBJIHdhbnQgdG8gYWxsb3cgdGVzdHMgdG8gY29tbWl0IG1vcmUgcHJvcGVy dGllcywKYnV0IGZvciB0aGlzIHRvIHdvcmsgSSBoYXZlIHRvIGZpeCBhbGwgcHJvcGVydGllcyB0 byB3b3JrIGJldHRlcgp3aXRoIGF0b21pYyBjb21taXQuIEluc3RlYWQgb2Ygc3BlY2lhbCBjYXNp bmcgZWFjaApwcm9wZXJ0eSBtYWtlIGEgYml0bWFzayBmb3IgYWxsIHByb3BlcnR5IGNoYW5nZWQg ZmxhZ3MsIGFuZCB0cnkgdG8KY29tbWl0IGFsbCBwcm9wZXJ0aWVzLgoKQ2hhbmdzIHNpbmNlIHYx OgotIE1lbnRpb24gd2hpY2ggcHJvcGVydGllcyB3ZSBzZXQgdG8gd2hhdC4KLSBBc3NlcnQgdGhl IHByb3BlcnR5IHRvIGJlIHNldCBpcyB2YWxpZC4KClNpZ25lZC1vZmYtYnk6IE1hYXJ0ZW4gTGFu a2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Ci0tLQogbGliL2lndF9r bXMuYyAgICAgICAgICAgICAgICAgICAgfCA0NCArKysrKysrKysrKysrKysrKysrLS0tLS0tLS0t LS0tLS0tLS0tLS0tCiBsaWIvaWd0X2ttcy5oICAgICAgICAgICAgICAgICAgICB8IDM1ICsrKysr KysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCiB0ZXN0cy9rbXNfYXRvbWljX2ludGVycnVwdGli bGUuYyB8ICA0ICsrLS0KIHRlc3RzL2ttc19wYW5lbF9maXR0aW5nLmMgICAgICAgIHwgIDIgKy0K IDQgZmlsZXMgY2hhbmdlZCwgNDUgaW5zZXJ0aW9ucygrKSwgNDAgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvbGliL2lndF9rbXMuYyBiL2xpYi9pZ3Rfa21zLmMKaW5kZXggZDI1MDkwYjA1Yzcw Li4wN2QyMDc0YzJiMWEgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3Rfa21zLmMKKysrIGIvbGliL2lndF9r bXMuYwpAQCAtMjQ4LDcgKzI0OCw3IEBAIGlndF9hdG9taWNfZmlsbF9jb25uZWN0b3JfcHJvcHMo aWd0X2Rpc3BsYXlfdCAqZGlzcGxheSwgaWd0X291dHB1dF90ICpvdXRwdXQsCiAJCQlpZiAoc3Ry Y21wKHByb3AtPm5hbWUsIGNvbm5fcHJvcF9uYW1lc1tqXSkgIT0gMCkKIAkJCQljb250aW51ZTsK IAotCQkJb3V0cHV0LT5jb25maWcuYXRvbWljX3Byb3BzX2Nvbm5lY3RvcltqXSA9IHByb3BzLT5w cm9wc1tpXTsKKwkJCW91dHB1dC0+cHJvcHNbal0gPSBwcm9wcy0+cHJvcHNbaV07CiAJCQlicmVh azsKIAkJfQogCkBAIC0xODM0LDcgKzE4MzQsNyBAQCB2b2lkIGlndF9kaXNwbGF5X2luaXQoaWd0 X2Rpc3BsYXlfdCAqZGlzcGxheSwgaW50IGRybV9mZCkKIAogCQlpZ3Rfb3V0cHV0X3JlZnJlc2go b3V0cHV0KTsKIAotCQlvdXRwdXQtPmNvbmZpZy5waXBlX2NoYW5nZWQgPSB0cnVlOworCQlpZ3Rf b3V0cHV0X3NldF9wcm9wX2NoYW5nZWQob3V0cHV0LCBJR1RfQ09OTkVDVE9SX0NSVENfSUQpOwog CX0KIAogCWRybU1vZGVGcmVlUGxhbmVSZXNvdXJjZXMocGxhbmVfcmVzb3VyY2VzKTsKQEAgLTI1 MTQsMjMgKzI1MTQsMjQgQEAgc3RhdGljIHZvaWQgaWd0X2F0b21pY19wcmVwYXJlX2NydGNfY29t bWl0KGlndF9waXBlX3QgKnBpcGVfb2JqLCBkcm1Nb2RlQXRvbWljUmUKIHN0YXRpYyB2b2lkIGln dF9hdG9taWNfcHJlcGFyZV9jb25uZWN0b3JfY29tbWl0KGlndF9vdXRwdXRfdCAqb3V0cHV0LCBk cm1Nb2RlQXRvbWljUmVxICpyZXEpCiB7CiAKLQlzdHJ1Y3Qga21zdGVzdF9jb25uZWN0b3JfY29u ZmlnICpjb25maWcgPSAmb3V0cHV0LT5jb25maWc7CisJaW50IGk7CiAKLQlpZiAoY29uZmlnLT5j b25uZWN0b3Jfc2NhbGluZ19tb2RlX2NoYW5nZWQpCi0JCWlndF9hdG9taWNfcG9wdWxhdGVfY29u bmVjdG9yX3JlcShyZXEsIG91dHB1dCwgSUdUX0NPTk5FQ1RPUl9TQ0FMSU5HX01PREUsIGNvbmZp Zy0+Y29ubmVjdG9yX3NjYWxpbmdfbW9kZSk7CisJZm9yIChpID0gMDsgaSA8IElHVF9OVU1fQ09O TkVDVE9SX1BST1BTOyBpKyspIHsKKwkJaWYgKCFpZ3Rfb3V0cHV0X2lzX3Byb3BfY2hhbmdlZChv dXRwdXQsIGkpKQorCQkJY29udGludWU7CiAKLQlpZiAoY29uZmlnLT5waXBlX2NoYW5nZWQpIHsK LQkJdWludDMyX3QgY3J0Y19pZCA9IDA7CisJCS8qIGl0J3MgYW4gZXJyb3IgdG8gdHJ5IGFuIHVu c3VwcG9ydGVkIGZlYXR1cmUgKi8KKwkJaWd0X2Fzc2VydChvdXRwdXQtPnByb3BzW2ldKTsKIAot CQlpZiAob3V0cHV0LT5jb25maWcucGlwZSAhPSBQSVBFX05PTkUpCi0JCQljcnRjX2lkID0gb3V0 cHV0LT5jb25maWcuY3J0Yy0+Y3J0Y19pZDsKKwkJaWd0X2RlYnVnKCIlczogU2V0dGluZyBwcm9w ZXJ0eSBcIiVzXCIgdG8gMHglIlBSSXg2NCIvJSJQUklpNjQiXG4iLAorCQkJICBpZ3Rfb3V0cHV0 X25hbWUob3V0cHV0KSwgaWd0X2Nvbm5lY3Rvcl9wcm9wX25hbWVzW2ldLAorCQkJICBvdXRwdXQt PnZhbHVlc1tpXSwgb3V0cHV0LT52YWx1ZXNbaV0pOwogCi0JCWlndF9hdG9taWNfcG9wdWxhdGVf Y29ubmVjdG9yX3JlcShyZXEsIG91dHB1dCwgSUdUX0NPTk5FQ1RPUl9DUlRDX0lELCBjcnRjX2lk KTsKKwkJaWd0X2Fzc2VydF9sdCgwLCBkcm1Nb2RlQXRvbWljQWRkUHJvcGVydHkocmVxLAorCQkJ CQkgIG91dHB1dC0+Y29uZmlnLmNvbm5lY3Rvci0+Y29ubmVjdG9yX2lkLAorCQkJCQkgIG91dHB1 dC0+cHJvcHNbaV0sCisJCQkJCSAgb3V0cHV0LT52YWx1ZXNbaV0pKTsKIAl9Ci0JLyoKLQkgKglU T0RPOiBBZGQgYWxsIG90aGVyIGNvbm5lY3RvciBsZXZlbCBwcm9wZXJ0aWVzIGhlcmUKLQkgKi8K LQogfQogCiAvKgpAQCAtMjYyNSwxMSArMjYyNiwxMCBAQCBkaXNwbGF5X2NvbW1pdF9jaGFuZ2Vk KGlndF9kaXNwbGF5X3QgKmRpc3BsYXksIGVudW0gaWd0X2NvbW1pdF9zdHlsZSBzKQogCWZvciAo aSA9IDA7IGkgPCBkaXNwbGF5LT5uX291dHB1dHM7IGkrKykgewogCQlpZ3Rfb3V0cHV0X3QgKm91 dHB1dCA9ICZkaXNwbGF5LT5vdXRwdXRzW2ldOwogCi0JCWlmIChzICE9IENPTU1JVF9VTklWRVJT QUwpCi0JCQlvdXRwdXQtPmNvbmZpZy5waXBlX2NoYW5nZWQgPSBmYWxzZTsKLQogCQlpZiAocyA9 PSBDT01NSVRfQVRPTUlDKQotCQkJb3V0cHV0LT5jb25maWcuY29ubmVjdG9yX3NjYWxpbmdfbW9k ZV9jaGFuZ2VkID0gZmFsc2U7CisJCQlvdXRwdXQtPmNoYW5nZWQgPSAwOworCQllbHNlIGlmIChz ICE9IENPTU1JVF9VTklWRVJTQUwpCisJCQlpZ3Rfb3V0cHV0X2NsZWFyX3Byb3BfY2hhbmdlZChv dXRwdXQsIElHVF9DT05ORUNUT1JfQ1JUQ19JRCk7CiAJfQogfQogCkBAIC0yODczLDE4ICsyODcz LDE2IEBAIHZvaWQgaWd0X291dHB1dF9zZXRfcGlwZShpZ3Rfb3V0cHV0X3QgKm91dHB1dCwgZW51 bSBwaXBlIHBpcGUpCiAJaWYgKHBpcGUgIT0gUElQRV9OT05FKQogCQlkaXNwbGF5LT5waXBlc1tw aXBlXS5tb2RlX2NoYW5nZWQgPSB0cnVlOwogCi0Jb3V0cHV0LT5jb25maWcucGlwZV9jaGFuZ2Vk ID0gdHJ1ZTsKKwlpZ3Rfb3V0cHV0X3NldF9wcm9wX3ZhbHVlKG91dHB1dCwgSUdUX0NPTk5FQ1RP Ul9DUlRDX0lELCBwaXBlID09IFBJUEVfTk9ORSA/IDAgOiBkaXNwbGF5LT5waXBlc1twaXBlXS5j cnRjX2lkKTsKIAogCWlndF9vdXRwdXRfcmVmcmVzaChvdXRwdXQpOwogfQogCiB2b2lkIGlndF9v dXRwdXRfc2V0X3NjYWxpbmdfbW9kZShpZ3Rfb3V0cHV0X3QgKm91dHB1dCwgdWludDY0X3Qgc2Nh bGluZ19tb2RlKQogewotCW91dHB1dC0+Y29uZmlnLmNvbm5lY3Rvcl9zY2FsaW5nX21vZGVfY2hh bmdlZCA9IHRydWU7Ci0KLQlvdXRwdXQtPmNvbmZpZy5jb25uZWN0b3Jfc2NhbGluZ19tb2RlID0g c2NhbGluZ19tb2RlOworCWlndF9vdXRwdXRfc2V0X3Byb3BfdmFsdWUob3V0cHV0LCBJR1RfQ09O TkVDVE9SX1NDQUxJTkdfTU9ERSwgc2NhbGluZ19tb2RlKTsKIAotCWlndF9yZXF1aXJlKG91dHB1 dC0+Y29uZmlnLmF0b21pY19wcm9wc19jb25uZWN0b3JbSUdUX0NPTk5FQ1RPUl9TQ0FMSU5HX01P REVdKTsKKwlpZ3RfcmVxdWlyZShvdXRwdXQtPnByb3BzW0lHVF9DT05ORUNUT1JfU0NBTElOR19N T0RFXSk7CiB9CiAKIGlndF9wbGFuZV90ICppZ3Rfb3V0cHV0X2dldF9wbGFuZShpZ3Rfb3V0cHV0 X3QgKm91dHB1dCwgaW50IHBsYW5lX2lkeCkKZGlmZiAtLWdpdCBhL2xpYi9pZ3Rfa21zLmggYi9s aWIvaWd0X2ttcy5oCmluZGV4IDhkYzExOGM5NjFiNy4uMWVmMTBlN2Q1MjVjIDEwMDY0NAotLS0g YS9saWIvaWd0X2ttcy5oCisrKyBiL2xpYi9pZ3Rfa21zLmgKQEAgLTEzMSwxMCArMTMxLDcgQEAg c3RydWN0IGttc3Rlc3RfY29ubmVjdG9yX2NvbmZpZyB7CiAJZHJtTW9kZUNvbm5lY3RvciAqY29u bmVjdG9yOwogCWRybU1vZGVFbmNvZGVyICplbmNvZGVyOwogCWRybU1vZGVNb2RlSW5mbyBkZWZh dWx0X21vZGU7Ci0JdWludDY0X3QgY29ubmVjdG9yX3NjYWxpbmdfbW9kZTsKLQlib29sIGNvbm5l Y3Rvcl9zY2FsaW5nX21vZGVfY2hhbmdlZDsKLQlib29sIHBpcGVfY2hhbmdlZDsKLQl1aW50MzJf dCBhdG9taWNfcHJvcHNfY29ubmVjdG9yW0lHVF9OVU1fQ09OTkVDVE9SX1BST1BTXTsKKwogCWlu dCBwaXBlOwogCXVuc2lnbmVkIHZhbGlkX2NydGNfaWR4X21hc2s7CiB9OwpAQCAtMzY0LDYgKzM2 MSwxMiBAQCB0eXBlZGVmIHN0cnVjdCB7CiAJZW51bSBwaXBlIHBlbmRpbmdfcGlwZTsKIAlib29s IHVzZV9vdmVycmlkZV9tb2RlOwogCWRybU1vZGVNb2RlSW5mbyBvdmVycmlkZV9tb2RlOworCisJ LyogYml0bWFzayBvZiBjaGFuZ2VkIHByb3BlcnRpZXMgKi8KKwl1aW50NjRfdCBjaGFuZ2VkOwor CisJdWludDMyX3QgcHJvcHNbSUdUX05VTV9DT05ORUNUT1JfUFJPUFNdOworCXVpbnQ2NF90IHZh bHVlc1tJR1RfTlVNX0NPTk5FQ1RPUl9QUk9QU107CiB9IGlndF9vdXRwdXRfdDsKIAogc3RydWN0 IGlndF9kaXNwbGF5IHsKQEAgLTU0NSwxNiArNTQ4LDIwIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBp Z3Rfb3V0cHV0X2lzX2Nvbm5lY3RlZChpZ3Rfb3V0cHV0X3QgKm91dHB1dCkKICNkZWZpbmUgaWd0 X2F0b21pY19wb3B1bGF0ZV9jcnRjX3JlcShyZXEsIHBpcGUsIHByb3AsIHZhbHVlKSBcCiAJaWd0 X2Fzc2VydF9sdCgwLCBkcm1Nb2RlQXRvbWljQWRkUHJvcGVydHkocmVxLCBwaXBlLT5jcnRjX2lk LFwKIAkJCQkJCSAgcGlwZS0+YXRvbWljX3Byb3BzX2NydGNbcHJvcF0sIHZhbHVlKSkKLS8qKgot ICogaWd0X2F0b21pY19wb3B1bGF0ZV9jb25uZWN0b3JfcmVxOgotICogQHJlcTogQSBwb2ludGVy IHRvIGRybU1vZGVBdG9taWNSZXEKLSAqIEBvdXRwdXQ6IEEgcG9pbnRlciBpZ3Rfb3V0cHV0X3QK LSAqIEBwcm9wOiBvbmUgb2YgaWd0X2F0b21pY19jb25uZWN0b3JfcHJvcGVydGllcwotICogQHZh bHVlOiB0aGUgdmFsdWUgdG8gYWRkCi0gKi8KLSNkZWZpbmUgaWd0X2F0b21pY19wb3B1bGF0ZV9j b25uZWN0b3JfcmVxKHJlcSwgb3V0cHV0LCBwcm9wLCB2YWx1ZSkgXAotCWlndF9hc3NlcnRfbHQo MCwgZHJtTW9kZUF0b21pY0FkZFByb3BlcnR5KHJlcSwgb3V0cHV0LT5jb25maWcuY29ubmVjdG9y LT5jb25uZWN0b3JfaWQsXAotCQkJCQkJICBvdXRwdXQtPmNvbmZpZy5hdG9taWNfcHJvcHNfY29u bmVjdG9yW3Byb3BdLCB2YWx1ZSkpCisKKyNkZWZpbmUgaWd0X291dHB1dF9pc19wcm9wX2NoYW5n ZWQob3V0cHV0LCBwcm9wKSBcCisJKCEhKChvdXRwdXQpLT5jaGFuZ2VkICYgKDEgPDwgKHByb3Ap KSkpCisjZGVmaW5lIGlndF9vdXRwdXRfc2V0X3Byb3BfY2hhbmdlZChvdXRwdXQsIHByb3ApIFwK Kwkob3V0cHV0KS0+Y2hhbmdlZCB8PSAxIDw8IChwcm9wKQorCisjZGVmaW5lIGlndF9vdXRwdXRf Y2xlYXJfcHJvcF9jaGFuZ2VkKG91dHB1dCwgcHJvcCkgXAorCShvdXRwdXQpLT5jaGFuZ2VkICY9 IH4oMSA8PCAocHJvcCkpCisKKyNkZWZpbmUgaWd0X291dHB1dF9zZXRfcHJvcF92YWx1ZShvdXRw dXQsIHByb3AsIHZhbHVlKSBcCisJZG8geyBcCisJCShvdXRwdXQpLT52YWx1ZXNbcHJvcF0gPSAo dmFsdWUpOyBcCisJCWlndF9vdXRwdXRfc2V0X3Byb3BfY2hhbmdlZChvdXRwdXQsIHByb3ApOyBc CisJfSB3aGlsZSAoMCkKIAogLyoKICAqIGlndF9waXBlX3JlZnJlc2g6CmRpZmYgLS1naXQgYS90 ZXN0cy9rbXNfYXRvbWljX2ludGVycnVwdGlibGUuYyBiL3Rlc3RzL2ttc19hdG9taWNfaW50ZXJy dXB0aWJsZS5jCmluZGV4IDRlMDZlZTRlMmQ2Yi4uMmQxOWZlOTY3ODA5IDEwMDY0NAotLS0gYS90 ZXN0cy9rbXNfYXRvbWljX2ludGVycnVwdGlibGUuYworKysgYi90ZXN0cy9rbXNfYXRvbWljX2lu dGVycnVwdGlibGUuYwpAQCAtMTU5LDcgKzE1OSw3IEBAIHN0YXRpYyB2b2lkIHJ1bl9wbGFuZV90 ZXN0KGlndF9kaXNwbGF5X3QgKmRpc3BsYXksIGVudW0gcGlwZSBwaXBlLCBpZ3Rfb3V0cHV0X3QK IAkJCQkJcGxhbmUtPnBpcGUtPmF0b21pY19wcm9wc19jcnRjW0lHVF9DUlRDX01PREVfSURdLAog CQkJCQlwbGFuZS0+cGlwZS0+YXRvbWljX3Byb3BzX2NydGNbSUdUX0NSVENfQUNUSVZFXSwKIAkJ CQkJLyogY29ubmVjdG9yOiAxIHByb3AgKi8KLQkJCQkJb3V0cHV0LT5jb25maWcuYXRvbWljX3By b3BzX2Nvbm5lY3RvcltJR1RfQ09OTkVDVE9SX0NSVENfSURdLAorCQkJCQlvdXRwdXQtPnByb3Bz W0lHVF9DT05ORUNUT1JfQ1JUQ19JRF0sCiAJCQkJCS8qIHBsYW5lOiByZW1haW5kZXIgcHJvcHMg Ki8KIAkJCQkJcGxhbmUtPmF0b21pY19wcm9wc19wbGFuZVtJR1RfUExBTkVfQ1JUQ19JRF0sCiAJ CQkJCXBsYW5lLT5hdG9taWNfcHJvcHNfcGxhbmVbSUdUX1BMQU5FX0ZCX0lEXSwKQEAgLTIwNCw3 ICsyMDQsNyBAQCBzdGF0aWMgdm9pZCBydW5fcGxhbmVfdGVzdChpZ3RfZGlzcGxheV90ICpkaXNw bGF5LCBlbnVtIHBpcGUgcGlwZSwgaWd0X291dHB1dF90CiAJCQljYXNlIHRlc3RfbGVnYWN5X2Rw bXM6IHsKIAkJCQlzdHJ1Y3QgZHJtX21vZGVfY29ubmVjdG9yX3NldF9wcm9wZXJ0eSBwcm9wID0g ewogCQkJCQkudmFsdWUgPSBEUk1fTU9ERV9EUE1TX09GRiwKLQkJCQkJLnByb3BfaWQgPSBvdXRw dXQtPmNvbmZpZy5hdG9taWNfcHJvcHNfY29ubmVjdG9yW0lHVF9DT05ORUNUT1JfRFBNU10sCisJ CQkJCS5wcm9wX2lkID0gb3V0cHV0LT5wcm9wc1tJR1RfQ09OTkVDVE9SX0RQTVNdLAogCQkJCQku Y29ubmVjdG9yX2lkID0gb3V0cHV0LT5pZCwKIAkJCQl9OwogCmRpZmYgLS1naXQgYS90ZXN0cy9r bXNfcGFuZWxfZml0dGluZy5jIGIvdGVzdHMva21zX3BhbmVsX2ZpdHRpbmcuYwppbmRleCA4NWEy MzFlNjBlYTIuLmU0ZWEzNTU2MTFjMyAxMDA2NDQKLS0tIGEvdGVzdHMva21zX3BhbmVsX2ZpdHRp bmcuYworKysgYi90ZXN0cy9rbXNfcGFuZWxfZml0dGluZy5jCkBAIC0yNzUsNyArMjc1LDcgQEAg c3RhdGljIHZvaWQgdGVzdF9hdG9taWNfZmFzdHNldChpZ3RfZGlzcGxheV90ICpkaXNwbGF5KQog CWlndF9yZXF1aXJlKGludGVsX2dlbihpbnRlbF9nZXRfZHJtX2RldmlkKGRpc3BsYXktPmRybV9m ZCkpID49IDUpOwogCiAJZm9yX2VhY2hfcGlwZV93aXRoX3ZhbGlkX291dHB1dChkaXNwbGF5LCBw aXBlLCBvdXRwdXQpIHsKLQkJaWYgKCFvdXRwdXQtPmNvbmZpZy5hdG9taWNfcHJvcHNfY29ubmVj dG9yW0lHVF9DT05ORUNUT1JfU0NBTElOR19NT0RFXSkKKwkJaWYgKCFvdXRwdXQtPnByb3BzW0lH VF9DT05ORUNUT1JfU0NBTElOR19NT0RFXSkKIAkJCWNvbnRpbnVlOwogCiAJCXRlc3RfcGFuZWxf Zml0dGluZ19mYXN0c2V0KGRpc3BsYXksIHBpcGUsIG91dHB1dCk7Ci0tIAoyLjE0LjEKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWls aW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=