From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Herrmann Subject: [PATCH 4/8] drm: make vma-manager entries untyped Date: Wed, 3 Aug 2016 20:04:28 +0200 Message-ID: <20160803180432.1341-5-dh.herrmann@gmail.com> References: <20160803180432.1341-1-dh.herrmann@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x241.google.com (mail-wm0-x241.google.com [IPv6:2a00:1450:400c:c09::241]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1408C6E896 for ; Wed, 3 Aug 2016 18:05:02 +0000 (UTC) Received: by mail-wm0-x241.google.com with SMTP id o80so37486506wme.0 for ; Wed, 03 Aug 2016 11:05:02 -0700 (PDT) In-Reply-To: <20160803180432.1341-1-dh.herrmann@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: Daniel Vetter List-Id: dri-devel@lists.freedesktop.org UmlnaHQgbm93LCB0aGUgdm1hLW1hbmFnZXIgcmVxdWlyZXMgYWxsIGVudHJpZXMgdG8gcHJvdmlk ZSBhICJzdHJ1Y3QKZmlsZSoiIGFzIGlkZW50aWZpZXIuIFRoaXMgaXMgY29uZnVzaW5nLCBzaW5j ZSB0aGVyZSBpcyBubyBpbmhlcmVudApjb25uZWN0aW9uIHRvICJzdHJ1Y3QgZmlsZSIgaW4gdGhl IHZtYS1tYW5hZ2VyIGF0IGFsbCwgYnV0IGl0IGlzCmV4Y2x1c2l2ZWx5IHVzZWQgYXMgdGFnLgoK UmVwbGFjZSBpdHMgdXNhZ2Ugd2l0aCBhIHNpbXBsZSAidm9pZCAqdGFnIiBhbmQgbWFrZSBzdXJl IGNhbGxlcnMgY2FuIHVzZQphcmJpdHJhcnkgdGFncy4KClNpZ25lZC1vZmYtYnk6IERhdmlkIEhl cnJtYW5uIDxkaC5oZXJybWFubkBnbWFpbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2RybV92 bWFfbWFuYWdlci5jIHwgNDAgKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0t CiBpbmNsdWRlL2RybS9kcm1fdm1hX21hbmFnZXIuaCAgICAgfCAxOCArKysrKysrKy0tLS0tLS0t LS0KIDIgZmlsZXMgY2hhbmdlZCwgMjcgaW5zZXJ0aW9ucygrKSwgMzEgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV92bWFfbWFuYWdlci5jIGIvZHJpdmVycy9n cHUvZHJtL2RybV92bWFfbWFuYWdlci5jCmluZGV4IGYzMDZjODguLjk1NDI0OGUgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fdm1hX21hbmFnZXIuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vZHJtX3ZtYV9tYW5hZ2VyLmMKQEAgLTI1LDcgKzI1LDYgQEAKICNpbmNsdWRlIDxkcm0vZHJt UC5oPgogI2luY2x1ZGUgPGRybS9kcm1fbW0uaD4KICNpbmNsdWRlIDxkcm0vZHJtX3ZtYV9tYW5h Z2VyLmg+Ci0jaW5jbHVkZSA8bGludXgvZnMuaD4KICNpbmNsdWRlIDxsaW51eC9tbS5oPgogI2lu Y2x1ZGUgPGxpbnV4L21vZHVsZS5oPgogI2luY2x1ZGUgPGxpbnV4L3JidHJlZS5oPgpAQCAtMjc3 LDkgKzI3Niw5IEBAIEVYUE9SVF9TWU1CT0woZHJtX3ZtYV9vZmZzZXRfcmVtb3ZlKTsKIC8qKgog ICogZHJtX3ZtYV9ub2RlX2FsbG93IC0gQWRkIG9wZW4tZmlsZSB0byBsaXN0IG9mIGFsbG93ZWQg dXNlcnMKICAqIEBub2RlOiBOb2RlIHRvIG1vZGlmeQotICogQGZpbHA6IE9wZW4gZmlsZSB0byBh ZGQKKyAqIEB0YWc6IFRhZyBvZiBmaWxlIHRvIHJlbW92ZQogICoKLSAqIEFkZCBAZmlscCB0byB0 aGUgbGlzdCBvZiBhbGxvd2VkIG9wZW4tZmlsZXMgZm9yIHRoaXMgbm9kZS4gSWYgQGZpbHAgaXMK KyAqIEFkZCBAdGFnIHRvIHRoZSBsaXN0IG9mIGFsbG93ZWQgb3Blbi1maWxlcyBmb3IgdGhpcyBu b2RlLiBJZiBAdGFnIGlzCiAgKiBhbHJlYWR5IG9uIHRoaXMgbGlzdCwgdGhlIHJlZi1jb3VudCBp cyBpbmNyZW1lbnRlZC4KICAqCiAgKiBUaGUgbGlzdCBvZiBhbGxvd2VkLXVzZXJzIGlzIHByZXNl cnZlZCBhY3Jvc3MgZHJtX3ZtYV9vZmZzZXRfYWRkKCkgYW5kCkBAIC0yOTQsNyArMjkzLDcgQEAg RVhQT1JUX1NZTUJPTChkcm1fdm1hX29mZnNldF9yZW1vdmUpOwogICogUkVUVVJOUzoKICAqIDAg b24gc3VjY2VzcywgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBpbnRlcm5hbCBmYWlsdXJlIChvdXQt b2YtbWVtKQogICovCi1pbnQgZHJtX3ZtYV9ub2RlX2FsbG93KHN0cnVjdCBkcm1fdm1hX29mZnNl dF9ub2RlICpub2RlLCBzdHJ1Y3QgZmlsZSAqZmlscCkKK2ludCBkcm1fdm1hX25vZGVfYWxsb3co c3RydWN0IGRybV92bWFfb2Zmc2V0X25vZGUgKm5vZGUsIHZvaWQgKnRhZykKIHsKIAlzdHJ1Y3Qg cmJfbm9kZSAqKml0ZXI7CiAJc3RydWN0IHJiX25vZGUgKnBhcmVudCA9IE5VTEw7CkBAIC0zMTUs MTAgKzMxNCwxMCBAQCBpbnQgZHJtX3ZtYV9ub2RlX2FsbG93KHN0cnVjdCBkcm1fdm1hX29mZnNl dF9ub2RlICpub2RlLCBzdHJ1Y3QgZmlsZSAqZmlscCkKIAkJcGFyZW50ID0gKml0ZXI7CiAJCWVu dHJ5ID0gcmJfZW50cnkoKml0ZXIsIHN0cnVjdCBkcm1fdm1hX29mZnNldF9maWxlLCB2bV9yYik7 CiAKLQkJaWYgKGZpbHAgPT0gZW50cnktPnZtX2ZpbHApIHsKKwkJaWYgKHRhZyA9PSBlbnRyeS0+ dm1fdGFnKSB7CiAJCQllbnRyeS0+dm1fY291bnQrKzsKIAkJCWdvdG8gdW5sb2NrOwotCQl9IGVs c2UgaWYgKGZpbHAgPiBlbnRyeS0+dm1fZmlscCkgeworCQl9IGVsc2UgaWYgKHRhZyA+IGVudHJ5 LT52bV90YWcpIHsKIAkJCWl0ZXIgPSAmKCppdGVyKS0+cmJfcmlnaHQ7CiAJCX0gZWxzZSB7CiAJ CQlpdGVyID0gJigqaXRlciktPnJiX2xlZnQ7CkBAIC0zMzAsNyArMzI5LDcgQEAgaW50IGRybV92 bWFfbm9kZV9hbGxvdyhzdHJ1Y3QgZHJtX3ZtYV9vZmZzZXRfbm9kZSAqbm9kZSwgc3RydWN0IGZp bGUgKmZpbHApCiAJCWdvdG8gdW5sb2NrOwogCX0KIAotCW5ldy0+dm1fZmlscCA9IGZpbHA7CisJ bmV3LT52bV90YWcgPSB0YWc7CiAJbmV3LT52bV9jb3VudCA9IDE7CiAJcmJfbGlua19ub2RlKCZu ZXctPnZtX3JiLCBwYXJlbnQsIGl0ZXIpOwogCXJiX2luc2VydF9jb2xvcigmbmV3LT52bV9yYiwg Jm5vZGUtPnZtX2ZpbGVzKTsKQEAgLTM0NiwxNyArMzQ1LDE3IEBAIEVYUE9SVF9TWU1CT0woZHJt X3ZtYV9ub2RlX2FsbG93KTsKIC8qKgogICogZHJtX3ZtYV9ub2RlX3Jldm9rZSAtIFJlbW92ZSBv cGVuLWZpbGUgZnJvbSBsaXN0IG9mIGFsbG93ZWQgdXNlcnMKICAqIEBub2RlOiBOb2RlIHRvIG1v ZGlmeQotICogQGZpbHA6IE9wZW4gZmlsZSB0byByZW1vdmUKKyAqIEB0YWc6IFRhZyBvZiBmaWxl IHRvIHJlbW92ZQogICoKLSAqIERlY3JlbWVudCB0aGUgcmVmLWNvdW50IG9mIEBmaWxwIGluIHRo ZSBsaXN0IG9mIGFsbG93ZWQgb3Blbi1maWxlcyBvbiBAbm9kZS4KLSAqIElmIHRoZSByZWYtY291 bnQgZHJvcHMgdG8gemVybywgcmVtb3ZlIEBmaWxwIGZyb20gdGhlIGxpc3QuIFlvdSBtdXN0IGNh bGwKLSAqIHRoaXMgb25jZSBmb3IgZXZlcnkgZHJtX3ZtYV9ub2RlX2FsbG93KCkgb24gQGZpbHAu CisgKiBEZWNyZW1lbnQgdGhlIHJlZi1jb3VudCBvZiBAdGFnIGluIHRoZSBsaXN0IG9mIGFsbG93 ZWQgb3Blbi1maWxlcyBvbiBAbm9kZS4KKyAqIElmIHRoZSByZWYtY291bnQgZHJvcHMgdG8gemVy bywgcmVtb3ZlIEB0YWcgZnJvbSB0aGUgbGlzdC4gWW91IG11c3QgY2FsbAorICogdGhpcyBvbmNl IGZvciBldmVyeSBkcm1fdm1hX25vZGVfYWxsb3coKSBvbiBAdGFnLgogICoKICAqIFRoaXMgaXMg bG9ja2VkIGFnYWluc3QgY29uY3VycmVudCBhY2Nlc3MgaW50ZXJuYWxseS4KICAqCi0gKiBJZiBA ZmlscCBpcyBub3Qgb24gdGhlIGxpc3QsIG5vdGhpbmcgaXMgZG9uZS4KKyAqIElmIEB0YWcgaXMg bm90IG9uIHRoZSBsaXN0LCBub3RoaW5nIGlzIGRvbmUuCiAgKi8KLXZvaWQgZHJtX3ZtYV9ub2Rl X3Jldm9rZShzdHJ1Y3QgZHJtX3ZtYV9vZmZzZXRfbm9kZSAqbm9kZSwgc3RydWN0IGZpbGUgKmZp bHApCit2b2lkIGRybV92bWFfbm9kZV9yZXZva2Uoc3RydWN0IGRybV92bWFfb2Zmc2V0X25vZGUg Km5vZGUsIHZvaWQgKnRhZykKIHsKIAlzdHJ1Y3QgZHJtX3ZtYV9vZmZzZXRfZmlsZSAqZW50cnk7 CiAJc3RydWN0IHJiX25vZGUgKml0ZXI7CkBAIC0zNjYsMTMgKzM2NSwxMyBAQCB2b2lkIGRybV92 bWFfbm9kZV9yZXZva2Uoc3RydWN0IGRybV92bWFfb2Zmc2V0X25vZGUgKm5vZGUsIHN0cnVjdCBm aWxlICpmaWxwKQogCWl0ZXIgPSBub2RlLT52bV9maWxlcy5yYl9ub2RlOwogCXdoaWxlIChsaWtl bHkoaXRlcikpIHsKIAkJZW50cnkgPSByYl9lbnRyeShpdGVyLCBzdHJ1Y3QgZHJtX3ZtYV9vZmZz ZXRfZmlsZSwgdm1fcmIpOwotCQlpZiAoZmlscCA9PSBlbnRyeS0+dm1fZmlscCkgeworCQlpZiAo dGFnID09IGVudHJ5LT52bV90YWcpIHsKIAkJCWlmICghLS1lbnRyeS0+dm1fY291bnQpIHsKIAkJ CQlyYl9lcmFzZSgmZW50cnktPnZtX3JiLCAmbm9kZS0+dm1fZmlsZXMpOwogCQkJCWtmcmVlKGVu dHJ5KTsKIAkJCX0KIAkJCWJyZWFrOwotCQl9IGVsc2UgaWYgKGZpbHAgPiBlbnRyeS0+dm1fZmls cCkgeworCQl9IGVsc2UgaWYgKHRhZyA+IGVudHJ5LT52bV90YWcpIHsKIAkJCWl0ZXIgPSBpdGVy LT5yYl9yaWdodDsKIAkJfSBlbHNlIHsKIAkJCWl0ZXIgPSBpdGVyLT5yYl9sZWZ0OwpAQCAtMzg2 LDkgKzM4NSw5IEBAIEVYUE9SVF9TWU1CT0woZHJtX3ZtYV9ub2RlX3Jldm9rZSk7CiAvKioKICAq IGRybV92bWFfbm9kZV9pc19hbGxvd2VkIC0gQ2hlY2sgd2hldGhlciBhbiBvcGVuLWZpbGUgaXMg Z3JhbnRlZCBhY2Nlc3MKICAqIEBub2RlOiBOb2RlIHRvIGNoZWNrCi0gKiBAZmlscDogT3Blbi1m aWxlIHRvIGNoZWNrIGZvcgorICogQHRhZzogVGFnIG9mIGZpbGUgdG8gcmVtb3ZlCiAgKgotICog U2VhcmNoIHRoZSBsaXN0IGluIEBub2RlIHdoZXRoZXIgQGZpbHAgaXMgY3VycmVudGx5IG9uIHRo ZSBsaXN0IG9mIGFsbG93ZWQKKyAqIFNlYXJjaCB0aGUgbGlzdCBpbiBAbm9kZSB3aGV0aGVyIEB0 YWcgaXMgY3VycmVudGx5IG9uIHRoZSBsaXN0IG9mIGFsbG93ZWQKICAqIG9wZW4tZmlsZXMgKHNl ZSBkcm1fdm1hX25vZGVfYWxsb3coKSkuCiAgKgogICogVGhpcyBpcyBsb2NrZWQgYWdhaW5zdCBj b25jdXJyZW50IGFjY2VzcyBpbnRlcm5hbGx5LgpAQCAtMzk2LDggKzM5NSw3IEBAIEVYUE9SVF9T WU1CT0woZHJtX3ZtYV9ub2RlX3Jldm9rZSk7CiAgKiBSRVRVUk5TOgogICogdHJ1ZSBpZmYgQGZp bHAgaXMgb24gdGhlIGxpc3QKICAqLwotYm9vbCBkcm1fdm1hX25vZGVfaXNfYWxsb3dlZChzdHJ1 Y3QgZHJtX3ZtYV9vZmZzZXRfbm9kZSAqbm9kZSwKLQkJCSAgICAgc3RydWN0IGZpbGUgKmZpbHAp Citib29sIGRybV92bWFfbm9kZV9pc19hbGxvd2VkKHN0cnVjdCBkcm1fdm1hX29mZnNldF9ub2Rl ICpub2RlLCB2b2lkICp0YWcpCiB7CiAJc3RydWN0IGRybV92bWFfb2Zmc2V0X2ZpbGUgKmVudHJ5 OwogCXN0cnVjdCByYl9ub2RlICppdGVyOwpAQCAtNDA3LDkgKzQwNSw5IEBAIGJvb2wgZHJtX3Zt YV9ub2RlX2lzX2FsbG93ZWQoc3RydWN0IGRybV92bWFfb2Zmc2V0X25vZGUgKm5vZGUsCiAJaXRl ciA9IG5vZGUtPnZtX2ZpbGVzLnJiX25vZGU7CiAJd2hpbGUgKGxpa2VseShpdGVyKSkgewogCQll bnRyeSA9IHJiX2VudHJ5KGl0ZXIsIHN0cnVjdCBkcm1fdm1hX29mZnNldF9maWxlLCB2bV9yYik7 Ci0JCWlmIChmaWxwID09IGVudHJ5LT52bV9maWxwKQorCQlpZiAodGFnID09IGVudHJ5LT52bV90 YWcpCiAJCQlicmVhazsKLQkJZWxzZSBpZiAoZmlscCA+IGVudHJ5LT52bV9maWxwKQorCQllbHNl IGlmICh0YWcgPiBlbnRyeS0+dm1fdGFnKQogCQkJaXRlciA9IGl0ZXItPnJiX3JpZ2h0OwogCQll bHNlCiAJCQlpdGVyID0gaXRlci0+cmJfbGVmdDsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2Ry bV92bWFfbWFuYWdlci5oIGIvaW5jbHVkZS9kcm0vZHJtX3ZtYV9tYW5hZ2VyLmgKaW5kZXggMDZl YThlMDcuLjZlZGM5NjggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL2RybV92bWFfbWFuYWdlci5o CisrKyBiL2luY2x1ZGUvZHJtL2RybV92bWFfbWFuYWdlci5oCkBAIC0yNCw3ICsyNCw2IEBACiAg Ki8KIAogI2luY2x1ZGUgPGRybS9kcm1fbW0uaD4KLSNpbmNsdWRlIDxsaW51eC9mcy5oPgogI2lu Y2x1ZGUgPGxpbnV4L21tLmg+CiAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CiAjaW5jbHVkZSA8 bGludXgvcmJ0cmVlLmg+CkBAIC0zMyw3ICszMiw3IEBACiAKIHN0cnVjdCBkcm1fdm1hX29mZnNl dF9maWxlIHsKIAlzdHJ1Y3QgcmJfbm9kZSB2bV9yYjsKLQlzdHJ1Y3QgZmlsZSAqdm1fZmlscDsK Kwl2b2lkICp2bV90YWc7CiAJdW5zaWduZWQgbG9uZyB2bV9jb3VudDsKIH07CiAKQEAgLTYyLDEw ICs2MSw5IEBAIGludCBkcm1fdm1hX29mZnNldF9hZGQoc3RydWN0IGRybV92bWFfb2Zmc2V0X21h bmFnZXIgKm1nciwKIHZvaWQgZHJtX3ZtYV9vZmZzZXRfcmVtb3ZlKHN0cnVjdCBkcm1fdm1hX29m ZnNldF9tYW5hZ2VyICptZ3IsCiAJCQkgICBzdHJ1Y3QgZHJtX3ZtYV9vZmZzZXRfbm9kZSAqbm9k ZSk7CiAKLWludCBkcm1fdm1hX25vZGVfYWxsb3coc3RydWN0IGRybV92bWFfb2Zmc2V0X25vZGUg Km5vZGUsIHN0cnVjdCBmaWxlICpmaWxwKTsKLXZvaWQgZHJtX3ZtYV9ub2RlX3Jldm9rZShzdHJ1 Y3QgZHJtX3ZtYV9vZmZzZXRfbm9kZSAqbm9kZSwgc3RydWN0IGZpbGUgKmZpbHApOwotYm9vbCBk cm1fdm1hX25vZGVfaXNfYWxsb3dlZChzdHJ1Y3QgZHJtX3ZtYV9vZmZzZXRfbm9kZSAqbm9kZSwK LQkJCSAgICAgc3RydWN0IGZpbGUgKmZpbHApOworaW50IGRybV92bWFfbm9kZV9hbGxvdyhzdHJ1 Y3QgZHJtX3ZtYV9vZmZzZXRfbm9kZSAqbm9kZSwgdm9pZCAqdGFnKTsKK3ZvaWQgZHJtX3ZtYV9u b2RlX3Jldm9rZShzdHJ1Y3QgZHJtX3ZtYV9vZmZzZXRfbm9kZSAqbm9kZSwgdm9pZCAqdGFnKTsK K2Jvb2wgZHJtX3ZtYV9ub2RlX2lzX2FsbG93ZWQoc3RydWN0IGRybV92bWFfb2Zmc2V0X25vZGUg Km5vZGUsIHZvaWQgKnRhZyk7CiAKIC8qKgogICogZHJtX3ZtYV9vZmZzZXRfZXhhY3RfbG9va3Vw X2xvY2tlZCgpIC0gTG9vayB1cCBub2RlIGJ5IGV4YWN0IGFkZHJlc3MKQEAgLTIxNiw5ICsyMTQs OSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZHJtX3ZtYV9ub2RlX3VubWFwKHN0cnVjdCBkcm1fdm1h X29mZnNldF9ub2RlICpub2RlLAogLyoqCiAgKiBkcm1fdm1hX25vZGVfdmVyaWZ5X2FjY2Vzcygp IC0gQWNjZXNzIHZlcmlmaWNhdGlvbiBoZWxwZXIgZm9yIFRUTQogICogQG5vZGU6IE9mZnNldCBu b2RlCi0gKiBAZmlscDogT3Blbi1maWxlCisgKiBAdGFnOiBUYWcgb2YgZmlsZSB0byBjaGVjawog ICoKLSAqIFRoaXMgY2hlY2tzIHdoZXRoZXIgQGZpbHAgaXMgZ3JhbnRlZCBhY2Nlc3MgdG8gQG5v ZGUuIEl0IGlzIHRoZSBzYW1lIGFzCisgKiBUaGlzIGNoZWNrcyB3aGV0aGVyIEB0YWcgaXMgZ3Jh bnRlZCBhY2Nlc3MgdG8gQG5vZGUuIEl0IGlzIHRoZSBzYW1lIGFzCiAgKiBkcm1fdm1hX25vZGVf aXNfYWxsb3dlZCgpIGJ1dCBzdWl0YWJsZSBhcyBkcm9wLWluIGhlbHBlciBmb3IgVFRNCiAgKiB2 ZXJpZnlfYWNjZXNzKCkgY2FsbGJhY2tzLgogICoKQEAgLTIyNiw5ICsyMjQsOSBAQCBzdGF0aWMg aW5saW5lIHZvaWQgZHJtX3ZtYV9ub2RlX3VubWFwKHN0cnVjdCBkcm1fdm1hX29mZnNldF9ub2Rl ICpub2RlLAogICogMCBpZiBhY2Nlc3MgaXMgZ3JhbnRlZCwgLUVBQ0NFUyBvdGhlcndpc2UuCiAg Ki8KIHN0YXRpYyBpbmxpbmUgaW50IGRybV92bWFfbm9kZV92ZXJpZnlfYWNjZXNzKHN0cnVjdCBk cm1fdm1hX29mZnNldF9ub2RlICpub2RlLAotCQkJCQkgICAgIHN0cnVjdCBmaWxlICpmaWxwKQor CQkJCQkgICAgIHZvaWQgKnRhZykKIHsKLQlyZXR1cm4gZHJtX3ZtYV9ub2RlX2lzX2FsbG93ZWQo bm9kZSwgZmlscCkgPyAwIDogLUVBQ0NFUzsKKwlyZXR1cm4gZHJtX3ZtYV9ub2RlX2lzX2FsbG93 ZWQobm9kZSwgdGFnKSA/IDAgOiAtRUFDQ0VTOwogfQogCiAjZW5kaWYgLyogX19EUk1fVk1BX01B TkFHRVJfSF9fICovCi0tIAoyLjkuMgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vZHJpLWRldmVsCg==