From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Nick Edelen" Subject: [RFC/PATCH 2/4] rev-cache: non-commit object caching + tests Date: Fri, 03 Jul 2009 16:13:35 +0100 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=----------jUwSqibpsV8Y4edO2eU2Gg Cc: "Junio C Hamano" , "Sam Vilain" , "Shawn O. Pearce" , "Johannes Schindelin" , "Andreas Ericsson" , "Jeff King" To: "git@vger.kernel.org" X-From: git-owner@vger.kernel.org Fri Jul 03 17:14:20 2009 Return-path: Envelope-to: gcvg-git-2@gmane.org Received: from vger.kernel.org ([209.132.176.167]) by lo.gmane.org with esmtp (Exim 4.50) id 1MMkSx-0005qe-R9 for gcvg-git-2@gmane.org; Fri, 03 Jul 2009 17:14:20 +0200 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755507AbZGCPNr (ORCPT ); Fri, 3 Jul 2009 11:13:47 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1755420AbZGCPNr (ORCPT ); Fri, 3 Jul 2009 11:13:47 -0400 Received: from mail-ew0-f215.google.com ([209.85.219.215]:58426 "EHLO mail-ew0-f215.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751812AbZGCPNp (ORCPT ); Fri, 3 Jul 2009 11:13:45 -0400 Received: by mail-ew0-f215.google.com with SMTP id 11so1142634ewy.37 for ; Fri, 03 Jul 2009 08:13:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:date:to:subject:from:cc :content-type:mime-version:message-id:user-agent; bh=lTWahxSZ1+q/VaLK5XZABbN7qWSS+siJ0W1UkghuPdQ=; b=wt5TfegnZpVGcsXgPyJReZpZZeKzZLrWc2pfFsuYNFVGj0PvEnD0qgC4IdI6SiAQtb 9HPMHAFFpZanBXLNOAvUBPhBwxe90i68FiE6snrRvw+TMru+45iOVu9hpla0hI1tkTUG txZbfBDyW3+PJVH4MuPMzp6r+S9jiVKCqT1jY= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=date:to:subject:from:cc:content-type:mime-version:message-id :user-agent; b=NI+Sbb78qKslsf7JG4mPIDwApatlbp2+9rNtShgoryG21yadtIWYZ24HjwEfUCqaZF 2O11k73AyNhPyaBanpABPFhT+gAOHjTRfgqy6qrNgnDZeqkcJ2DVSLUi+h5+pq4ZyWKd U93D0MD/tpVngts0uuXWBz9tJwd+J08GlyApw= Received: by 10.210.70.8 with SMTP id s8mr1825569eba.14.1246634028877; Fri, 03 Jul 2009 08:13:48 -0700 (PDT) Received: from sirnot (resnet-nat-217.ucs.ed.ac.uk [194.81.254.217]) by mx.google.com with ESMTPS id 24sm2930023eyx.23.2009.07.03.08.13.47 (version=TLSv1/SSLv3 cipher=RC4-MD5); Fri, 03 Jul 2009 08:13:48 -0700 (PDT) User-Agent: Opera Mail/9.63 (Win32) Sender: git-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Archived-At: ------------jUwSqibpsV8Y4edO2eU2Gg Content-Type: text/plain; charset=iso-8859-15 Content-Transfer-Encoding: 7bit Part of the revision-cache patch series, this patch adds preliminary non-commit object support. Non-start commits are diff'ed against parents to produce a list of objects 'unique' to that commit, which are then added to the pending objects list in traversal. Signed-off-by: Nick Edelen --- rev-cache.c | 204 ++++++++++++++++++++++++++++++++++++++++++++- t/t6015-rev-cache-list.sh | 28 ++++++ 2 files changed, 230 insertions(+), 2 deletions(-) ------------jUwSqibpsV8Y4edO2eU2Gg Content-Disposition: attachment; filename=patch_objs.diff Content-Type: application/octet-stream; name=patch_objs.diff Content-Transfer-Encoding: Base64 UGFydCBvZiB0aGUgcmV2aXNpb24tY2FjaGUgcGF0Y2ggc2VyaWVzLCB0aGlzIHBh dGNoIGFkZHMgcHJlbGltaW5hcnkgbm9uLWNvbW1pdCBvYmplY3Qgc3VwcG9ydC4g IE5vbi1zdGFydCBjb21taXRzIGFyZSBkaWZmJ2VkIGFnYWluc3QgcGFyZW50cyB0 byBwcm9kdWNlIGEgbGlzdCBvZiBvYmplY3RzICd1bmlxdWUnIHRvIHRoYXQgY29t bWl0LCB3aGljaCBhcmUgdGhlbiBhZGRlZCB0byB0aGUgcGVuZGluZyBvYmplY3Rz IGxpc3QgaW4gdHJhdmVyc2FsLgoKU2lnbmVkLW9mZi1ieTogTmljayBFZGVsZW4g PHNpcm5vdEBnbWFpbC5jb20+CgotLS0KIHJldi1jYWNoZS5jICAgICAgICAgICAg ICAgfCAgMjA0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrLQogdC90NjAxNS1yZXYtY2FjaGUtbGlzdC5zaCB8ICAgMjggKysrKysr CiAyIGZpbGVzIGNoYW5nZWQsIDIzMCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL3Jldi1jYWNoZS5jIGIvcmV2LWNhY2hlLmMKaW5k ZXggMWU3ZTcyOS4uZDM3MGIzZCAxMDA3NTUKLS0tIGEvcmV2LWNhY2hlLmMKKysr IGIvcmV2LWNhY2hlLmMKQEAgLTI0Nyw2ICsyNDcsMzIgQEAgdW5zaWduZWQgY2hh ciAqZ2V0X2NhY2hlX3NsaWNlKHN0cnVjdCBjb21taXQgKmNvbW1pdCkKIAogLyog dHJhdmVyc2FsICovCiAKK3N0YXRpYyB2b2lkIGhhbmRsZV9ub25jb21taXQoc3Ry dWN0IHJldl9pbmZvICpyZXZzLCBzdHJ1Y3Qgb2JqZWN0X2VudHJ5ICplbnRyeSkK K3sKKwlzdHJ1Y3Qgb2JqZWN0ICpvYmogPSAwOworCQorCXN3aXRjaCAoZW50cnkt PnR5cGUpIHsKKwljYXNlIE9CSl9UUkVFIDogCisJCWlmIChyZXZzLT50cmVlX29i amVjdHMpCisJCQlvYmogPSAoc3RydWN0IG9iamVjdCAqKWxvb2t1cF90cmVlKGVu dHJ5LT5zaGExKTsKKwkJYnJlYWs7CisJY2FzZSBPQkpfQkxPQiA6IAorCQlpZiAo cmV2cy0+YmxvYl9vYmplY3RzKQorCQkJb2JqID0gKHN0cnVjdCBvYmplY3QgKils b29rdXBfYmxvYihlbnRyeS0+c2hhMSk7CisJCWJyZWFrOworCWNhc2UgT0JKX1RB RyA6IAorCQlpZiAocmV2cy0+dGFnX29iamVjdHMpCisJCQlvYmogPSAoc3RydWN0 IG9iamVjdCAqKWxvb2t1cF90YWcoZW50cnktPnNoYTEpOworCQlicmVhazsKKwl9 CisJCisJaWYgKCFvYmopCisJCXJldHVybjsKKwkKKwlvYmotPmZsYWdzIHw9IEZB Q0VfVkFMVUU7CisJYWRkX3BlbmRpbmdfb2JqZWN0KHJldnMsIG9iaiwgIiIpOwor fQorCiBzdGF0aWMgaW50IHNldHVwX3RyYXZlcnNhbChzdHJ1Y3QgY2FjaGVfc2xp Y2VfaGVhZGVyICpoZWFkLCB1bnNpZ25lZCBjaGFyICptYXAsIHN0cnVjdCBjb21t aXQgKmNvbW1pdCwgc3RydWN0IGNvbW1pdF9saXN0ICoqd29yaykKIHsKIAlzdHJ1 Y3QgaW5kZXhfZW50cnkgKmllcDsKQEAgLTMyNyw5ICszNTMsMTIgQEAgc3RhdGlj IGludCB0cmF2ZXJzZV9jYWNoZV9zbGljZV8xKHN0cnVjdCBjYWNoZV9zbGljZV9o ZWFkZXIgKmhlYWQsIHVuc2lnbmVkIGNoYXIKIAkJaSArPSBBQ1RVQUxfT0JKRUNU X0VOVFJZX1NJWkUoZW50cnkpOwogCQkKIAkJLyogYWRkIGV4dHJhIG9iamVjdHMg aWYgbmVjZXNzYXJ5ICovCi0JCWlmIChlbnRyeS0+dHlwZSAhPSBPQkpfQ09NTUlU KQorCQlpZiAoZW50cnktPnR5cGUgIT0gT0JKX0NPTU1JVCkgeworCQkJaWYgKGNv bnN1bWVfY2hpbGRyZW4pCisJCQkJaGFuZGxlX25vbmNvbW1pdChyZXZzLCBlbnRy eSk7CisJCQkKIAkJCWNvbnRpbnVlOwotCQllbHNlCisJCX0gZWxzZQogCQkJY29u c3VtZV9jaGlsZHJlbiA9IDA7CiAJCQogCQlpZiAocGF0aCA+PSB0b3RhbF9wYXRo X25yKQpAQCAtNzc5LDYgKzgwOCwxNjggQEAgc3RhdGljIHZvaWQgYWRkX29iamVj dF9lbnRyeShjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExLCBpbnQgdHlwZSwgc3Ry dWN0IG9iamVjdF8KIAkKIH0KIAorLyogcmV0dXJucyBub24temVybyB0byBjb250 aW51ZSBwYXJzaW5nLCAwIHRvIHNraXAgKi8KK3R5cGVkZWYgaW50ICgqZHVtcF90 cmVlX2ZuKShjb25zdCB1bnNpZ25lZCBjaGFyICosIGNvbnN0IGNoYXIgKiwgdW5z aWduZWQgaW50KTsgLyogc2hhMSwgcGF0aCwgbW9kZSAqLworCisvKiB3ZSBuZWVk IHRvIHdhbGsgdGhlIHRyZWVzIGJ5IGhhc2gsIHNvIHVuZm9ydHVuYXRlbHkgd2Ug Y2FuJ3QgdXNlIHRyYXZlcnNlX3RyZWVzIGluIHRyZWUtd2Fsay5jICovCitzdGF0 aWMgaW50IGR1bXBfdHJlZShzdHJ1Y3QgdHJlZSAqdHJlZSwgZHVtcF90cmVlX2Zu IGZuKQoreworCXN0cnVjdCB0cmVlX2Rlc2MgZGVzYzsKKwlzdHJ1Y3QgbmFtZV9l bnRyeSBlbnRyeTsKKwlzdHJ1Y3QgdHJlZSAqc3VidHJlZTsKKwlpbnQgcjsKKwkK KwlpZiAocGFyc2VfdHJlZSh0cmVlKSkKKwkJcmV0dXJuIC0xOworCQorCWluaXRf dHJlZV9kZXNjKCZkZXNjLCB0cmVlLT5idWZmZXIsIHRyZWUtPnNpemUpOworCXdo aWxlICh0cmVlX2VudHJ5KCZkZXNjLCAmZW50cnkpKSB7CisJCXN3aXRjaCAoZm4o ZW50cnkuc2hhMSwgZW50cnkucGF0aCwgZW50cnkubW9kZSkpIHsKKwkJY2FzZSAw IDoKKwkJCWdvdG8gY29udGludWVfbG9vcDsKKwkJZGVmYXVsdCA6IAorCQkJYnJl YWs7CisJCX0KKwkJCisJCWlmIChTX0lTRElSKGVudHJ5Lm1vZGUpKSB7CisJCQlz dWJ0cmVlID0gbG9va3VwX3RyZWUoZW50cnkuc2hhMSk7CisJCQlpZiAoIXN1YnRy ZWUpCisJCQkJcmV0dXJuIC0yOworCQkJCisJCQlpZiAoKHIgPSBkdW1wX3RyZWUo c3VidHJlZSwgZm4pKSA8IDApCisJCQkJcmV0dXJuIHI7CisJCX0KKwkJCitjb250 aW51ZV9sb29wOgorCQljb250aW51ZTsKKwl9CisJCisJcmV0dXJuIDA7Cit9CisK K3N0YXRpYyBpbnQgZHVtcF90cmVlX2NhbGxiYWNrKGNvbnN0IHVuc2lnbmVkIGNo YXIgKnNoYTEsIGNvbnN0IGNoYXIgKnBhdGgsIHVuc2lnbmVkIGludCBtb2RlKQor eworCXVuc2lnbmVkIGNoYXIgZGF0YVsyMV07CisJCisJaGFzaGNweShkYXRhLCBz aGExKTsKKwlkYXRhWzIwXSA9ICEhU19JU0RJUihtb2RlKTsKKwkKKwlzdHJidWZf YWRkKGdfYnVmZmVyLCBkYXRhLCAyMSk7CisJCisJcmV0dXJuIDE7Cit9CisKK3N0 YXRpYyB2b2lkIHRyZWVfYWRkcmVtb3ZlKHN0cnVjdCBkaWZmX29wdGlvbnMgKm9w dGlvbnMsCisJaW50IHdoYXRub3csIHVuc2lnbmVkIG1vZGUsCisJY29uc3QgdW5z aWduZWQgY2hhciAqc2hhMSwKKwljb25zdCBjaGFyICpjb25jYXRwYXRoKQorewor CXVuc2lnbmVkIGNoYXIgZGF0YVsyMV07CisJCisJaWYgKHdoYXRub3cgIT0gJysn KQorCQlyZXR1cm47CisJCisJaGFzaGNweShkYXRhLCBzaGExKTsKKwlkYXRhWzIw XSA9ICEhU19JU0RJUihtb2RlKTsKKwkKKwlzdHJidWZfYWRkKGdfYnVmZmVyLCBk YXRhLCAyMSk7Cit9CisKK3N0YXRpYyB2b2lkIHRyZWVfY2hhbmdlKHN0cnVjdCBk aWZmX29wdGlvbnMgKm9wdGlvbnMsCisJdW5zaWduZWQgb2xkX21vZGUsIHVuc2ln bmVkIG5ld19tb2RlLAorCWNvbnN0IHVuc2lnbmVkIGNoYXIgKm9sZF9zaGExLAor CWNvbnN0IHVuc2lnbmVkIGNoYXIgKm5ld19zaGExLAorCWNvbnN0IGNoYXIgKmNv bmNhdHBhdGgpCit7CisJdW5zaWduZWQgY2hhciBkYXRhWzIxXTsKKwkKKwlpZiAo IWhhc2hjbXAob2xkX3NoYTEsIG5ld19zaGExKSkKKwkJcmV0dXJuOworCQorCWhh c2hjcHkoZGF0YSwgbmV3X3NoYTEpOworCWRhdGFbMjBdID0gISFTX0lTRElSKG5l d19tb2RlKTsKKwkKKwlzdHJidWZfYWRkKGdfYnVmZmVyLCBkYXRhLCAyMSk7Cit9 CisKK3N0YXRpYyBpbnQgc29ydF90eXBlX2hhc2goY29uc3Qgdm9pZCAqYSwgY29u c3Qgdm9pZCAqYikKK3sKKwljb25zdCB1bnNpZ25lZCBjaGFyICpzYSA9IChjb25z dCB1bnNpZ25lZCBjaGFyICopYSwgCisJCSpzYiA9IChjb25zdCB1bnNpZ25lZCBj aGFyICopYjsKKwkKKwlpZiAoc2FbMjBdID09IHNiWzIwXSkKKwkJcmV0dXJuIGhh c2hjbXAoc2EsIHNiKTsKKwkKKwlyZXR1cm4gc2FbMjBdID4gc2JbMjBdID8gLTEg OiAxOworfQorCitzdGF0aWMgaW50IGFkZF91bmlxdWVfb2JqZWN0cyhzdHJ1Y3Qg Y29tbWl0ICpjb21taXQpCit7CisJc3RydWN0IGNvbW1pdF9saXN0ICpsaXN0Owor CXN0cnVjdCBzdHJidWYgb3MsIG9zdCwgKm9yaWdfYnVmOworCXN0cnVjdCBkaWZm X29wdGlvbnMgb3B0czsKKwlpbnQgaSwgaiwgbmV4dDsKKwljaGFyIGlzX2ZpcnN0 ID0gMTsKKwkKKwlzdHJidWZfaW5pdCgmb3MsIDApOworCXN0cmJ1Zl9pbml0KCZv c3QsIDApOworCW9yaWdfYnVmID0gZ19idWZmZXI7CisJCisJZGlmZl9zZXR1cCgm b3B0cyk7CisJRElGRl9PUFRfU0VUKCZvcHRzLCBSRUNVUlNJVkUpOworCURJRkZf T1BUX1NFVCgmb3B0cywgVFJFRV9JTl9SRUNVUlNJVkUpOworCW9wdHMuY2hhbmdl ID0gdHJlZV9jaGFuZ2U7CisJb3B0cy5hZGRfcmVtb3ZlID0gdHJlZV9hZGRyZW1v dmU7CisJCisJLyogdGhpcyBpcyBvbmx5IGNhbGxlZCBmb3Igbm9uLXN0YXJ0cyAo aWUuIGFsbCBwYXJlbnRzIGludGVyZXN0aW5nKSAqLworCWZvciAobGlzdCA9IGNv bW1pdC0+cGFyZW50czsgbGlzdDsgbGlzdCA9IGxpc3QtPm5leHQpIHsKKwkJaWYg KGlzX2ZpcnN0KQorCQkJZ19idWZmZXIgPSAmb3M7CisJCWVsc2UgCisJCQlnX2J1 ZmZlciA9ICZvc3Q7CisJCQorCQlzdHJidWZfc2V0bGVuKGdfYnVmZmVyLCAwKTsK KwkJZGlmZl90cmVlX3NoYTEobGlzdC0+aXRlbS0+dHJlZS0+b2JqZWN0LnNoYTEs IGNvbW1pdC0+dHJlZS0+b2JqZWN0LnNoYTEsICIiLCAmb3B0cyk7CisJCXFzb3J0 KGdfYnVmZmVyLT5idWYsIGdfYnVmZmVyLT5sZW4gLyAyMSwgMjEsIChpbnQgKCop KGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKSloYXNoY21wKTsKKwkJCisJCS8q IHRha2UgaW50ZXJzZWN0aW9uICovCisJCWlmICghaXNfZmlyc3QpIHsKKwkJCWZv ciAobmV4dCA9IGkgPSBqID0gMDsgaSA8IG9zLmxlbjsgaSArPSAyMSkgeworCQkJ CXdoaWxlIChqIDwgb3N0LmxlbiAmJiBoYXNoY21wKCh1bnNpZ25lZCBjaGFyICop KG9zdC5idWYgKyBqKSwgKHVuc2lnbmVkIGNoYXIgKikob3MuYnVmICsgaSkpIDwg MCkKKwkJCQkJaiArPSAyMTsKKwkJCQkKKwkJCQlpZiAoaiA+PSBvc3QubGVuIHx8 IGhhc2hjbXAoKHVuc2lnbmVkIGNoYXIgKikob3N0LmJ1ZiArIGopLCAodW5zaWdu ZWQgY2hhciAqKShvcy5idWYgKyBpKSkpCisJCQkJCWNvbnRpbnVlOworCQkJCQor CQkJCWlmIChuZXh0ICE9IGkpCisJCQkJCW1lbWNweShvcy5idWYgKyBuZXh0LCBv cy5idWYgKyBpLCAyMSk7CisJCQkJbmV4dCArPSAyMTsKKwkJCX0KKwkJCQorCQkJ aWYgKG5leHQgIT0gaSkKKwkJCQlzdHJidWZfc2V0bGVuKCZvcywgbmV4dCk7CisJ CX0gZWxzZQorCQkJaXNfZmlyc3QgPSAwOworCX0KKwkKKwlpZiAoaXNfZmlyc3Qp IHsKKwkJZ19idWZmZXIgPSAmb3M7CisJCWR1bXBfdHJlZShjb21taXQtPnRyZWUs IGR1bXBfdHJlZV9jYWxsYmFjayk7CisJfQorCQorCWlmIChvcy5sZW4pCisJCXFz b3J0KG9zLmJ1Ziwgb3MubGVuIC8gMjEsIDIxLCBzb3J0X3R5cGVfaGFzaCk7CisJ CisJZ19idWZmZXIgPSBvcmlnX2J1ZjsKKwlmb3IgKGkgPSAwOyBpIDwgb3MubGVu OyBpICs9IDIxKQorCQlhZGRfb2JqZWN0X2VudHJ5KCh1bnNpZ25lZCBjaGFyICop KG9zLmJ1ZiArIGkpLCBvcy5idWZbaSArIDIwXSA/IE9CSl9UUkVFIDogT0JKX0JM T0IsIDAsIDAsIDApOworCQorCXN0cmJ1Zl9yZWxlYXNlKCZvc3QpOworCXN0cmJ1 Zl9yZWxlYXNlKCZvcyk7CisJCisJcmV0dXJuIDA7Cit9CisKIHN0YXRpYyB2b2lk IGluaXRfcmV2Y2FjaGVfZGlyZWN0b3J5KHZvaWQpCiB7CiAJc3RydWN0IHN0YXQg Zmk7CkBAIC04ODYsNiArMTA3NywxNSBAQCBpbnQgbWFrZV9jYWNoZV9zbGljZShz dHJ1Y3QgcmV2X2NhY2hlX2luZm8gKnJjaSwKIAkJYWRkX29iamVjdF9lbnRyeSgw LCAwLCAmb2JqZWN0LCAmbWVyZ2VfcGF0aHMsICZzcGxpdF9wYXRocyk7CiAJCW9i amVjdF9ucisrOwogCQkKKwkJaWYgKCEoY29tbWl0LT5vYmplY3QuZmxhZ3MgJiBU UkVFU0FNRSkpIHsKKwkJCS8qIGFkZCBhbGwgdW5pcXVlIGNoaWxkcmVuIGZvciB0 aGlzIGNvbW1pdCAqLworCQkJYWRkX29iamVjdF9lbnRyeShjb21taXQtPnRyZWUt Pm9iamVjdC5zaGExLCBPQkpfVFJFRSwgMCwgMCwgMCk7CisJCQlvYmplY3RfbnIr KzsKKwkJCQorCQkJaWYgKCFvYmplY3QuaXNfc3RhcnQpCisJCQkJb2JqZWN0X25y ICs9IGFkZF91bmlxdWVfb2JqZWN0cyhjb21taXQpOworCQl9CisJCQogCQkvKiBw cmludCBldmVyeSB+MU1CIG9yIHNvICovCiAJCWlmIChidWZmZXIubGVuID4gMTAw MDAwMCkgewogCQkJd3JpdGVfaW5fZnVsbChmZCwgYnVmZmVyLmJ1ZiwgYnVmZmVy Lmxlbik7CmRpZmYgLS1naXQgYS90L3Q2MDE1LXJldi1jYWNoZS1saXN0LnNoIGIv dC90NjAxNS1yZXYtY2FjaGUtbGlzdC5zaAppbmRleCBlNjFlY2U0Li45Y2Q3MjJh IDEwMDc1NQotLS0gYS90L3Q2MDE1LXJldi1jYWNoZS1saXN0LnNoCisrKyBiL3Qv dDYwMTUtcmV2LWNhY2hlLWxpc3Quc2gKQEAgLTc1LDYgKzc1LDcgQEAgdGVzdF9l eHBlY3Rfc3VjY2VzcyAnaW5pdCByZXBvJyAnCiAKIGdpdC1yZXYtbGlzdCBIRUFE IC0tbm90IEhFQUR+MyA+cHJvcGVyX2NvbW1pdF9saXN0X2xpbWl0ZWQKIGdpdC1y ZXYtbGlzdCBIRUFEID5wcm9wZXJfY29tbWl0X2xpc3QKK2dpdC1yZXYtbGlzdCBI RUFEIC0tb2JqZWN0cyA+cHJvcGVyX29iamVjdF9saXN0CiAKIHRlc3RfZXhwZWN0 X3N1Y2Nlc3MgJ21ha2UgY2FjaGUgc2xpY2UnICcKIAlnaXQtcmV2LWNhY2hlIGFk ZCBIRUFEIDI+b3V0cHV0LmVyciAmJiAKQEAgLTk3LDQgKzk4LDMxIEBAIHRlc3Rf ZXhwZWN0X3N1Y2Nlc3MgJ3Rlc3QgcmV2LWNhY2hlcyB3YWxrZXIgZGlyZWN0bHkg KHVubGltaXRlZCknICcKIAl0ZXN0IC16IGAkc2hhMWRpZmYgbGlzdCBwcm9wZXJf Y29tbWl0X2xpc3RgCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Rlc3QgcmV2 LWxpc3QgcmV2LWxpc3QgdHJhdmVyc2FsIChsaW1pdGVkKScgJworCWdpdC1yZXYt bGlzdCBIRUFEIC0tbm90IEhFQUR+MyA+bGlzdCAmJiAKKwl0ZXN0IC16IGAkc2hh MWRpZmYgbGlzdCBwcm9wZXJfY29tbWl0X2xpc3RfbGltaXRlZGAKKycKKwordGVz dF9leHBlY3Rfc3VjY2VzcyAndGVzdCByZXYtbGlzdCB0cmF2ZXJzYWwgKHVubGlt aXRlZCknICcKKwlnaXQtcmV2LWxpc3QgSEVBRCA+bGlzdCAmJiAKKwl0ZXN0IC16 IGAkc2hhMWRpZmYgbGlzdCBwcm9wZXJfY29tbWl0X2xpc3RgCisnCisKKyNkbyB0 aGUgc2FtZSBmb3Igb2JqZWN0cwordGVzdF9leHBlY3Rfc3VjY2VzcyAndGVzdCBy ZXYtY2FjaGVzIHdhbGtlciB3aXRoIG9iamVjdHMnICcKKwlnaXQtcmV2LWNhY2hl IHdhbGsgLS1vYmplY3RzIEhFQUQgPmxpc3QgJiYgCisJdGVzdCAteiBgJHNoYTFk aWZmIGxpc3QgcHJvcGVyX29iamVjdF9saXN0YAorJworCit0ZXN0X2V4cGVjdF9z dWNjZXNzICd0ZXN0IHJldi1saXN0IHdpdGggb2JqZWN0cyAobGltaXRlZCknICcK KwlnaXQtcmV2LWxpc3QgLS10b3BvLW9yZGVyIC0tb2JqZWN0cyBIRUFEID5saXN0 ICYmIAorCXRlc3QgLXogYCRzaGExZGlmZiBsaXN0IHByb3Blcl9vYmplY3RfbGlz dGAKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAndGVzdCByZXYtbGlzdCB3aXRo IG9iamVjdHMgKHVubGltaXRlZCknICcKKwlnaXQtcmV2LWxpc3QgLS1vYmplY3Rz IEhFQUQgPmxpc3QgJiYgCisJdGVzdCAteiBgJHNoYTFkaWZmIGxpc3QgcHJvcGVy X29iamVjdF9saXN0YAorJworCiB0ZXN0X2RvbmUKKwotLSAKdGc6ICg4ZmFhYzc1 Li4pIHQvcmV2Y2FjaGUvb2JqZWN0cyAoZGVwZW5kcyBvbjogdC9yZXZjYWNoZS9i YXNpYykK ------------jUwSqibpsV8Y4edO2eU2Gg--