From kfm-devel Fri Dec 21 11:09:17 2012 From: Vishesh Handa Date: Fri, 21 Dec 2012 11:09:17 +0000 To: kfm-devel Subject: Exception for Dolphin - KFileMetadataWidget Message-Id: X-MARC-Message: https://marc.info/?l=kfm-devel&m=135617579106217 MIME-Version: 1 Content-Type: multipart/mixed; boundary="--bcaec54d476604537f04d15ab611" --bcaec54d476604537f04d15ab611 Content-Type: multipart/alternative; boundary=bcaec54d476604537c04d15ab60f --bcaec54d476604537c04d15ab60f Content-Type: text/plain; charset=ISO-8859-1 Hello release team As most of you must know for KDE 4.9, a new package nepmuk-core was released, and with 4.10 we are now releasing nepomuk-widgets. The nepomuk-widgets initially just contained the Tagging and Rating widgets, which were adapted from kdelibs/nepomuk/ui. I use the word "adapted" cause their internals were ported to the new asynchronous APIs (which was the reason nepomuk-core was created) One of the primary ways users tag and rate files is through the information panel in Dolphin. The main widget in this panel is the KFileMetadataWidget (kdelibs/kio/kfile/*). This widget has many problems - * Uses the old Nepomuk Resource API from kdelibs - very buggy * Uses the old Nepomuk widgets from kdelibs - slower and not maintained * Had a multi-process architecture which involved spawning a new process which provided the Nepomuk / Strigi ** data. This was done cause Strigi is known to crash a lot. * Cause of this multi-process architecture it was very slow - specially on the Nepomuk side cause it would re-create the caches each time the process was run. This was especially wasteful because Dolphin itself uses Nepomuk and would have those caches. (The caches are not cross-application) * Hacking on the widget was hard - Its entire architecture is quite convoluted. I wanted to fix this with 4.10, so I copied most of the widget to nepomuk-widgets and named it Nepomuk2::FileMetadataWidget. This "new" widget was added in the feature plan [1]. It was never marked as completed cause it had some bugs, which I did not have the time to fix. It was however, still merged before the hard feature freeze. I did not submit my patch to use this widget in Dolphin, as it had some bugs, and I did not want to spoil Dolphin's experience. In hind-sight maybe I should have submitted it, and gotten all the bug reports. Fast forwarding to present time ---------------------------------------------- I finally squashed the last of the bugs in the widget, and made it support displaying indexing results even when the file was not indexed or Nepomuk is disabled. The old KFileMetadataWidget had the same capability - It used Strigi, while we use the new file indexer that I've been working on. I would like to use this new widget in dolphin for 4.10. I was told to ask for an exception from the release team. We still have one more release candidate to go, so it should get adequate testing, if not the full amount. Other advantages - * It is a LOT faster - and it feels like it (Patch attached, if you want to try it out) * Easier to maintain * Uses the Nepomuk2 widgets which are actively maintained, and will thus get the required bug fixes. They have been some bugs filed against Dolphin and its tagging behaviour, fixing this would be quite hard in kdelibs/Nepomuk, also I don't want to mess with that code base which barely gets tested any more. * Since Dolphin also uses Nepomuk2, and the new widget does not spawn a new process for the Nepomuk data, it can re-use the already filled caches. * This gives a much better experience even when Nepomuk is disabled. * This new widget's internal architecture is a lot better, and it's easy to modify - So it's easy to improve. If we do not ship this new widget, I'll have to clean up the KFileMetadataWidget cause it shows a lot of ugly data like "Resource Created", arguably this isn't very hard. However it is not something I want to do. Ditto for kdelibs/nepomuk/*. So, may I merge my patch into kde-baseapps 4.10? It will get tested more thoroughly in RC2. [1] http://techbase.kde.org/Schedules/KDE4/4.10_Feature_Plan -- Vishesh Handa --bcaec54d476604537c04d15ab60f Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
Hello release= team

As most of you must know for KDE 4.9, a new package nepm= uk-core was released, and with 4.10 we are now releasing nepomuk-widgets. T= he nepomuk-widgets initially just contained the Tagging and Rating widgets,= which were adapted from kdelibs/nepomuk/ui. I use the word "adapted&q= uot; cause their internals were ported to the new asynchronous APIs (which = was the reason nepomuk-core was created)

One of the primary ways users tag and rate files is through the i= nformation panel in Dolphin. The main widget in this panel is the KFileMeta= dataWidget (kdelibs/kio/kfile/*). This widget has many problems -

* Uses the old Nepomuk Resource API from kdelibs - very buggy
* Uses the old Nepomuk widgets from kdelibs - slower and not maintained
* Had a multi-process architecture which involved spawning a new pr= ocess which provided the Nepomuk / Strigi ** data. This was done cause Stri= gi is known to crash a lot.
* Cause of this multi-process architecture it was very slow - special= ly on the Nepomuk side cause it would re-create the caches each time the pr= ocess was run. This was especially wasteful because Dolphin itself uses Nep= omuk and would have those caches. (The caches are not cross-application)
* Hacking on the widget was hard - Its entire architecture is quite c= onvoluted.

I wanted to fi= x this with 4.10, so I copied most of the widget to nepomuk-widgets and nam= ed it Nepomuk2::FileMetadataWidget. This "new" widget was added i= n the feature plan [1]. It was never marked as completed cause it had some = bugs, which I did not have the time to fix. It was however, still merged be= fore the hard feature freeze.

I did not submit my patch to use this widget in Dolphin, as = it had some bugs, and I did not want to spoil Dolphin's experience. In = hind-sight maybe I should have submitted it, and gotten all the bug reports= .

Fast forwarding to present time
--------------= --------------------------------

I finally squashed the l= ast of the bugs in the widget, and made it support displaying indexing resu= lts even when the file was not indexed or Nepomuk is disabled. The old KFil= eMetadataWidget had the same capability - It used Strigi, while we use the = new file indexer that I've been working on.

<= div>I would like to use this new widget in dolphin for 4.10. I was told to = ask for an exception from the release team. We still have one more release = candidate to go, so it should get adequate testing, if not the full amount.=

Other advantages -

* It is a LOT faster - = and it feels like it (Patch attached, if you want to try it out)
<= div>* Easier to maintain
* Uses the Nepomuk2 widgets which ar= e actively maintained, and will thus get the required bug fixes. They have = been some bugs filed against Dolphin and its tagging behaviour, fixing this= would be quite hard in kdelibs/Nepomuk, also I don't want to mess with= that code base which barely gets tested any more.
* Since Dolphin also uses Nepomuk2, and the new widget does not = spawn a new process for the Nepomuk data, it can re-use the already filled = caches.
* This gives a much better experience even when Nepom= uk is disabled.
* This new widget's internal architecture is a lot better, a= nd it's easy to modify - So it's easy to improve.
If we do not ship this new widget, I'll have to clean up th= e KFileMetadataWidget cause it shows a lot of ugly data like "Resource= Created", arguably this isn't very hard. However it is not someth= ing I want to do. Ditto for kdelibs/nepomuk/*.

So, may I merge my patch into kde-baseapps 4.10? It will get= tested more thoroughly in RC2.
--bcaec54d476604537c04d15ab60f-- --bcaec54d476604537f04d15ab611 Content-Type: application/octet-stream; name="dolphin-nepomuk-widgets.patch" Content-Disposition: attachment; filename="dolphin-nepomuk-widgets.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_haz4mu1t0 ZGlmZiAtLWdpdCBhL2RvbHBoaW4vc3JjL0NNYWtlTGlzdHMudHh0IGIvZG9scGhpbi9zcmMvQ01h a2VMaXN0cy50eHQKaW5kZXggZjhkMjY2OS4uYjdhYTViMyAxMDA2NDQKLS0tIGEvZG9scGhpbi9z cmMvQ01ha2VMaXN0cy50eHQKKysrIGIvZG9scGhpbi9zcmMvQ01ha2VMaXN0cy50eHQKQEAgLTEs NSArMSw2IEBACiBtYWNyb19vcHRpb25hbF9maW5kX3BhY2thZ2UoU29wcmFubykKIG1hY3JvX29w dGlvbmFsX2ZpbmRfcGFja2FnZShOZXBvbXVrQ29yZSkKK21hY3JvX29wdGlvbmFsX2ZpbmRfcGFj a2FnZShOZXBvbXVrV2lkZ2V0cykKIG1hY3JvX2xvZ19mZWF0dXJlKE5lcG9tdWtDb3JlX0ZPVU5E ICJOZXBvbXVrIiAiTmVwb211ayIgImh0dHA6Ly93d3cua2RlLm9yZyIgRkFMU0UgIiIgIkZvciBh ZGRpbmcgZGVza3RvcC13aWRlIHRhZ2dpbmcgc3VwcG9ydCB0byBkb2xwaGluIikKIG1hY3JvX2Jv b2xfdG9fMDEoTmVwb211a0NvcmVfRk9VTkQgSEFWRV9ORVBPTVVLKQogY29uZmlndXJlX2ZpbGUo Y29uZmlnLW5lcG9tdWsuaC5jbWFrZSAke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vY29uZmln LW5lcG9tdWsuaCApCkBAIC0xMSw3ICsxMiw3IEBAIGluY2x1ZGVfZGlyZWN0b3JpZXMoICR7S0FD VElWSVRJRVNfSU5DTFVERV9ESVJTfSApCiAKIGlmIChOZXBvbXVrQ29yZV9GT1VORCkKICAgIyBZ ZXMsIFNvcHJhbm8gaW5jbHVkZXMgaXMgd2hhdCB3ZSBuZWVkIGhlcmUKLSAgaW5jbHVkZV9kaXJl Y3RvcmllcyggJHtTT1BSQU5PX0lOQ0xVREVfRElSfSAke05FUE9NVUtfQ09SRV9JTkNMVURFX0RJ Un0gKQorICBpbmNsdWRlX2RpcmVjdG9yaWVzKCAke1NPUFJBTk9fSU5DTFVERV9ESVJ9ICR7TkVQ T01VS19DT1JFX0lOQ0xVREVfRElSfSAke05FUE9NVUtfV0lER0VUU19JTkNMVURFX0RJUn0gKQog ZW5kaWYgKE5lcG9tdWtDb3JlX0ZPVU5EKQogCiBhZGRfc3ViZGlyZWN0b3J5KHRlc3RzKQpAQCAt MTAzLDYgKzEwNCw3IEBAIGlmIChOZXBvbXVrQ29yZV9GT1VORCkKICAgICB0YXJnZXRfbGlua19s aWJyYXJpZXMoCiAgICAgICAgIGRvbHBoaW5wcml2YXRlCiAgICAgICAgICR7TkVQT01VS19DT1JF X0xJQlJBUll9CisgICAgICAgICR7TkVQT01VS19XSURHRVRTX0xJQlJBUll9CiAgICAgICAgICR7 U09QUkFOT19MSUJSQVJJRVN9CiAgICAgKQogZW5kaWYgKE5lcG9tdWtDb3JlX0ZPVU5EKQpAQCAt MjI4LDYgKzIzMCw3IEBAIHRhcmdldF9saW5rX2xpYnJhcmllcyhrZGVpbml0X2RvbHBoaW4KIGlm IChOZXBvbXVrQ29yZV9GT1VORCkKICAgICB0YXJnZXRfbGlua19saWJyYXJpZXMoa2RlaW5pdF9k b2xwaGluCiAgICAgICAgICR7TkVQT01VS19DT1JFX0xJQlJBUll9CisgICAgICAgICR7TkVQT01V S19XSURHRVRTX0xJQlJBUll9CiAgICAgICAgICR7U09QUkFOT19MSUJSQVJJRVN9CiAgICAgKQog ZW5kaWYgKE5lcG9tdWtDb3JlX0ZPVU5EKQpAQCAtMzAyLDEwICszMDUsMTAgQEAgdGFyZ2V0X2xp bmtfbGlicmFyaWVzKGtjbV9kb2xwaGlubmF2aWdhdGlvbiAgJHtLREU0X0tERVVJX0xJQlN9ICR7 S0RFNF9LRklMRV9MSUIKIHRhcmdldF9saW5rX2xpYnJhcmllcyhrY21fZG9scGhpbnNlcnZpY2Vz ICAke0tERTRfS0RFVUlfTElCU30gJHtLREU0X0tGSUxFX0xJQlN9ICR7S0RFNF9LSU9fTElCU30g JHtLREU0X0tORVdTVFVGRjNfTElCUkFSWX0gZG9scGhpbnByaXZhdGUpCiB0YXJnZXRfbGlua19s aWJyYXJpZXMoa2NtX2RvbHBoaW5nZW5lcmFsICR7S0RFNF9LREVVSV9MSUJTfSAke0tERTRfS0ZJ TEVfTElCU30gJHtLREU0X0tJT19MSUJTfSBkb2xwaGlucHJpdmF0ZSkKIGlmIChOZXBvbXVrQ29y ZV9GT1VORCkKLSAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKGtjbV9kb2xwaGludmlld21vZGVzICR7 TkVQT01VS19DT1JFX0xJQlJBUll9KQotICB0YXJnZXRfbGlua19saWJyYXJpZXMoa2NtX2RvbHBo aW5uYXZpZ2F0aW9uICR7TkVQT01VS19DT1JFX0xJQlJBUll9KQotICB0YXJnZXRfbGlua19saWJy YXJpZXMoa2NtX2RvbHBoaW5zZXJ2aWNlcyAke05FUE9NVUtfQ09SRV9MSUJSQVJZfSkKLSAgdGFy Z2V0X2xpbmtfbGlicmFyaWVzKGtjbV9kb2xwaGluZ2VuZXJhbCAke05FUE9NVUtfQ09SRV9MSUJS QVJZfSkKKyAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKGtjbV9kb2xwaGludmlld21vZGVzICR7TkVQ T01VS19DT1JFX0xJQlJBUll9ICR7TkVQT01VS19XSURHRVRTX0xJQlJBUll9KQorICB0YXJnZXRf bGlua19saWJyYXJpZXMoa2NtX2RvbHBoaW5uYXZpZ2F0aW9uICR7TkVQT01VS19DT1JFX0xJQlJB Ull9ICR7TkVQT01VS19XSURHRVRTX0xJQlJBUll9KQorICB0YXJnZXRfbGlua19saWJyYXJpZXMo a2NtX2RvbHBoaW5zZXJ2aWNlcyAke05FUE9NVUtfQ09SRV9MSUJSQVJZfSAke05FUE9NVUtfV0lE R0VUU19MSUJSQVJZfSkKKyAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKGtjbV9kb2xwaGluZ2VuZXJh bCAke05FUE9NVUtfQ09SRV9MSUJSQVJZfSAke05FUE9NVUtfV0lER0VUU19MSUJSQVJZfSkKIGVu ZGlmIChOZXBvbXVrQ29yZV9GT1VORCkKIAogaW5zdGFsbChUQVJHRVRTIGtjbV9kb2xwaGludmll d21vZGVzIERFU1RJTkFUSU9OICR7UExVR0lOX0lOU1RBTExfRElSfSApCmRpZmYgLS1naXQgYS9k b2xwaGluL3NyYy9wYW5lbHMvaW5mb3JtYXRpb24vaW5mb3JtYXRpb25wYW5lbGNvbnRlbnQuY3Bw IGIvZG9scGhpbi9zcmMvcGFuZWxzL2luZm9ybWF0aW9uL2luZm9ybWF0aW9ucGFuZWxjb250ZW50 LmNwcAppbmRleCAzOWVkMWQyLi4zNTVhNTcxIDEwMDY0NAotLS0gYS9kb2xwaGluL3NyYy9wYW5l bHMvaW5mb3JtYXRpb24vaW5mb3JtYXRpb25wYW5lbGNvbnRlbnQuY3BwCisrKyBiL2RvbHBoaW4v c3JjL3BhbmVscy9pbmZvcm1hdGlvbi9pbmZvcm1hdGlvbnBhbmVsY29udGVudC5jcHAKQEAgLTIx LDcgKzIxLDYgQEAKIAogI2luY2x1ZGUgPEtEaWFsb2c+CiAjaW5jbHVkZSA8S0ZpbGVJdGVtPgot I2luY2x1ZGUgPGtmaWxlbWV0YWRhdGF3aWRnZXQuaD4KICNpbmNsdWRlIDxLR2xvYmFsU2V0dGlu Z3M+CiAjaW5jbHVkZSA8S0lPL0pvYlVpRGVsZWdhdGU+CiAjaW5jbHVkZSA8S0lPL1ByZXZpZXdK b2I+CkBAIC0zMiw2ICszMSw4IEBACiAjaW5jbHVkZSA8a3NlcGFyYXRvci5oPgogI2luY2x1ZGUg PEtTdHJpbmdIYW5kbGVyPgogCisjaW5jbHVkZSA8bmVwb211azIvZmlsZW1ldGFkYXRhd2lkZ2V0 Lmg+CisKICNpbmNsdWRlIDxwYW5lbHMvcGxhY2VzL3BsYWNlc2l0ZW0uaD4KICNpbmNsdWRlIDxw YW5lbHMvcGxhY2VzL3BsYWNlc2l0ZW1tb2RlbC5oPgogCkBAIC0xMDYsNyArMTA3LDcgQEAgSW5m b3JtYXRpb25QYW5lbENvbnRlbnQ6OkluZm9ybWF0aW9uUGFuZWxDb250ZW50KFFXaWRnZXQqIHBh cmVudCkgOgogICAgIGNvbnN0IGJvb2wgcHJldmlld3NTaG93biA9IEluZm9ybWF0aW9uUGFuZWxT ZXR0aW5nczo6cHJldmlld3NTaG93bigpOwogICAgIG1fcHJldmlldy0+c2V0VmlzaWJsZShwcmV2 aWV3c1Nob3duKTsKIAotICAgIG1fbWV0YURhdGFXaWRnZXQgPSBuZXcgS0ZpbGVNZXRhRGF0YVdp ZGdldChwYXJlbnQpOworICAgIG1fbWV0YURhdGFXaWRnZXQgPSBuZXcgTmVwb211azI6OkZpbGVN ZXRhRGF0YVdpZGdldChwYXJlbnQpOwogICAgIG1fbWV0YURhdGFXaWRnZXQtPnNldEZvbnQoS0ds b2JhbFNldHRpbmdzOjpzbWFsbGVzdFJlYWRhYmxlRm9udCgpKTsKICAgICBtX21ldGFEYXRhV2lk Z2V0LT5zZXRTaXplUG9saWN5KFFTaXplUG9saWN5OjpQcmVmZXJyZWQsIFFTaXplUG9saWN5OjpN aW5pbXVtKTsKICAgICBjb25uZWN0KG1fbWV0YURhdGFXaWRnZXQsIFNJR05BTCh1cmxBY3RpdmF0 ZWQoS1VybCkpLCB0aGlzLCBTSUdOQUwodXJsQWN0aXZhdGVkKEtVcmwpKSk7CmRpZmYgLS1naXQg YS9kb2xwaGluL3NyYy9wYW5lbHMvaW5mb3JtYXRpb24vaW5mb3JtYXRpb25wYW5lbGNvbnRlbnQu aCBiL2RvbHBoaW4vc3JjL3BhbmVscy9pbmZvcm1hdGlvbi9pbmZvcm1hdGlvbnBhbmVsY29udGVu dC5oCmluZGV4IGMwNDEyZTUuLjJhMzY5YmIgMTAwNjQ0Ci0tLSBhL2RvbHBoaW4vc3JjL3BhbmVs cy9pbmZvcm1hdGlvbi9pbmZvcm1hdGlvbnBhbmVsY29udGVudC5oCisrKyBiL2RvbHBoaW4vc3Jj L3BhbmVscy9pbmZvcm1hdGlvbi9pbmZvcm1hdGlvbnBhbmVsY29udGVudC5oCkBAIC0yNiw3ICsy Niw2IEBACiAjaW5jbHVkZSA8S1ZCb3g+CiAKIGNsYXNzIEtGaWxlSXRlbUxpc3Q7Ci1jbGFzcyBL RmlsZU1ldGFEYXRhV2lkZ2V0OwogY2xhc3MgUGhvbm9uV2lkZ2V0OwogY2xhc3MgUGl4bWFwVmll d2VyOwogY2xhc3MgUGxhY2VzSXRlbU1vZGVsOwpAQCAtMzUsNiArMzQsMTAgQEAgY2xhc3MgUVN0 cmluZzsKIGNsYXNzIFFMYWJlbDsKIGNsYXNzIFFTY3JvbGxBcmVhOwogCituYW1lc3BhY2UgTmVw b211azIgeworICAgIGNsYXNzIEZpbGVNZXRhRGF0YVdpZGdldDsKK30KKwogLyoqCiAgKiBAYnJp ZWYgTWFuYWdlcyB0aGUgd2lkZ2V0cyB0aGF0IGRpc3BsYXkgdGhlIG1ldGEgaW5mb3JtYXRpb24K ICogICAgICAgICBmb3IgZmlsZSBpdGVtcyBvZiB0aGUgSW5mb3JtYXRpb24gUGFuZWwuCkBAIC0x MzMsNyArMTM2LDcgQEAgcHJpdmF0ZToKICAgICBQaXhtYXBWaWV3ZXIqIG1fcHJldmlldzsKICAg ICBQaG9ub25XaWRnZXQqIG1fcGhvbm9uV2lkZ2V0OwogICAgIFFMYWJlbCogbV9uYW1lTGFiZWw7 Ci0gICAgS0ZpbGVNZXRhRGF0YVdpZGdldCogbV9tZXRhRGF0YVdpZGdldDsKKyAgICBOZXBvbXVr Mjo6RmlsZU1ldGFEYXRhV2lkZ2V0KiBtX21ldGFEYXRhV2lkZ2V0OwogICAgIFFTY3JvbGxBcmVh KiBtX21ldGFEYXRhQXJlYTsKIAogICAgIFBsYWNlc0l0ZW1Nb2RlbCogbV9wbGFjZXNJdGVtTW9k ZWw7CmRpZmYgLS1naXQgYS9kb2xwaGluL3NyYy92aWV3cy90b29sdGlwcy9maWxlbWV0YWRhdGF0 b29sdGlwLmNwcCBiL2RvbHBoaW4vc3JjL3ZpZXdzL3Rvb2x0aXBzL2ZpbGVtZXRhZGF0YXRvb2x0 aXAuY3BwCmluZGV4IDFmNGZiNjkuLmQwY2JhNzQgMTAwNjQ0Ci0tLSBhL2RvbHBoaW4vc3JjL3Zp ZXdzL3Rvb2x0aXBzL2ZpbGVtZXRhZGF0YXRvb2x0aXAuY3BwCisrKyBiL2RvbHBoaW4vc3JjL3Zp ZXdzL3Rvb2x0aXBzL2ZpbGVtZXRhZGF0YXRvb2x0aXAuY3BwCkBAIC0yMiw3ICsyMiw2IEBACiAj aW5jbHVkZSAiZmlsZW1ldGFkYXRhdG9vbHRpcC5oIgogCiAjaW5jbHVkZSA8S0NvbG9yU2NoZW1l PgotI2luY2x1ZGUgPGtmaWxlbWV0YWRhdGF3aWRnZXQuaD4KICNpbmNsdWRlIDxLU2VwYXJhdG9y PgogI2luY2x1ZGUgPEtXaW5kb3dTeXN0ZW0+CiAKQEAgLTMxLDYgKzMwLDggQEAKICNpbmNsdWRl IDxRU3R5bGVQYWludGVyPgogI2luY2x1ZGUgPFFWQm94TGF5b3V0PgogCisjaW5jbHVkZSA8bmVw b211azIvZmlsZW1ldGFkYXRhd2lkZ2V0Lmg+CisKIC8vIEZvciB0aGUgYmx1cnJlZCB0b29sdGlw IGJhY2tncm91bmQKICNpbmNsdWRlIDxwbGFzbWEvd2luZG93ZWZmZWN0cy5oPgogCkBAIC01NSw3 ICs1Niw3IEBAIEZpbGVNZXRhRGF0YVRvb2xUaXA6OkZpbGVNZXRhRGF0YVRvb2xUaXAoUVdpZGdl dCogcGFyZW50KSA6CiAgICAgbV9uYW1lLT5zZXRGb250KGZvbnQpOwogCiAgICAgLy8gQ3JlYXRl IHdpZGdldCBmb3IgdGhlIG1ldGEgZGF0YQotICAgIG1fZmlsZU1ldGFEYXRhV2lkZ2V0ID0gbmV3 IEtGaWxlTWV0YURhdGFXaWRnZXQodGhpcyk7CisgICAgbV9maWxlTWV0YURhdGFXaWRnZXQgPSBu ZXcgTmVwb211azI6OkZpbGVNZXRhRGF0YVdpZGdldCh0aGlzKTsKICAgICBtX2ZpbGVNZXRhRGF0 YVdpZGdldC0+c2V0Rm9yZWdyb3VuZFJvbGUoUVBhbGV0dGU6OlRvb2xUaXBUZXh0KTsKICAgICBt X2ZpbGVNZXRhRGF0YVdpZGdldC0+c2V0UmVhZE9ubHkodHJ1ZSk7CiAgICAgY29ubmVjdChtX2Zp bGVNZXRhRGF0YVdpZGdldCwgU0lHTkFMKG1ldGFEYXRhUmVxdWVzdEZpbmlzaGVkKEtGaWxlSXRl bUxpc3QpKSwKZGlmZiAtLWdpdCBhL2RvbHBoaW4vc3JjL3ZpZXdzL3Rvb2x0aXBzL2ZpbGVtZXRh ZGF0YXRvb2x0aXAuaCBiL2RvbHBoaW4vc3JjL3ZpZXdzL3Rvb2x0aXBzL2ZpbGVtZXRhZGF0YXRv b2x0aXAuaAppbmRleCA4NTZiNTU3Li5hYTdjZTYzIDEwMDY0NAotLS0gYS9kb2xwaGluL3NyYy92 aWV3cy90b29sdGlwcy9maWxlbWV0YWRhdGF0b29sdGlwLmgKKysrIGIvZG9scGhpbi9zcmMvdmll d3MvdG9vbHRpcHMvZmlsZW1ldGFkYXRhdG9vbHRpcC5oCkBAIC0yNSw5ICsyNSwxMiBAQAogI2lu Y2x1ZGUgPFFXaWRnZXQ+CiAKIGNsYXNzIEtGaWxlSXRlbUxpc3Q7Ci1jbGFzcyBLRmlsZU1ldGFE YXRhV2lkZ2V0OwogY2xhc3MgUUxhYmVsOwogCituYW1lc3BhY2UgTmVwb211azIgeworICAgIGNs YXNzIEZpbGVNZXRhRGF0YVdpZGdldDsKK30KKwogLyoqCiAgKiBAYnJpZWYgVG9vbHRpcCwgdGhh dCBzaG93cyB0aGUgbWV0YSBpbmZvcm1hdGlvbiBhbmQgYSBwcmV2aWV3IG9mIG9uZQogICogICAg ICAgIG9yIG1vcmUgZmlsZXMuCkBAIC02OCw3ICs3MSw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6 CiAgICAgUUxhYmVsKiBtX3ByZXZpZXc7CiAgICAgUUxhYmVsKiBtX25hbWU7Ci0gICAgS0ZpbGVN ZXRhRGF0YVdpZGdldCogbV9maWxlTWV0YURhdGFXaWRnZXQ7CisgICAgTmVwb211azI6OkZpbGVN ZXRhRGF0YVdpZGdldCogbV9maWxlTWV0YURhdGFXaWRnZXQ7CiB9OwogCiAjZW5kaWYK --bcaec54d476604537f04d15ab611--