
A comprehensive loan management system built on Frappe Framework. 100% open source and customizable for managing loans, repayments, and lending operations.
Alternatively, create a Compose service, go to Advanced → Import from Base64, and paste this payload:
ewogICJjb21wb3NlIjogIngtY3VzdG9tLWltYWdlOiAmY3VzdG9tX2ltYWdlXG4gIGltYWdlOiAke0lNQUdFX05BTUU6LWZyYXBwZS9lcnBuZXh0fToke1ZFUlNJT046LXYxNX1cbiAgcHVsbF9wb2xpY3k6ICR7UFVMTF9QT0xJQ1k6LWFsd2F5c31cbiAgZGVwbG95OlxuICAgIHJlc3RhcnRfcG9saWN5OlxuICAgICAgY29uZGl0aW9uOiBhbHdheXNcblxuc2VydmljZXM6XG4gIGJhY2tlbmQ6XG4gICAgPDw6ICpjdXN0b21faW1hZ2VcbiAgICBlbnRyeXBvaW50OiBbXCJiYXNoXCIsIFwiLWNcIl1cbiAgICBjb21tYW5kOlxuICAgICAgLSA+XG4gICAgICAgIGNkIC9ob21lL2ZyYXBwZS9mcmFwcGUtYmVuY2g7XG4gICAgICAgIGlmIFsgLWQgXCJhcHBzL2xlbmRpbmdcIiBdICYmICEgLi9lbnYvYmluL3BpcCBzaG93IGxlbmRpbmcgPiAvZGV2L251bGwgMj4mMTsgdGhlblxuICAgICAgICAgIGVjaG8gXCJJbnN0YWxsaW5nIGxlbmRpbmcgYXBwIGluIFB5dGhvbiBlbnZpcm9ubWVudC4uLlwiO1xuICAgICAgICAgIC4vZW52L2Jpbi9waXAgaW5zdGFsbCAtZSBhcHBzL2xlbmRpbmcgfHwgZWNobyBcIkZhaWxlZCB0byBpbnN0YWxsIGxlbmRpbmdcIjtcbiAgICAgICAgZmk7XG4gICAgICAgIGVjaG8gXCJXYWl0aW5nIGZvciBzaXRlIHRvIGJlIHJlYWR5Li4uXCI7XG4gICAgICAgIGV4cG9ydCBzdGFydD1gZGF0ZSArJXNgO1xuICAgICAgICB3aGlsZSBbICEgLWYgXCJzaXRlcy9zaXRlcy50eHRcIiBdIHx8IFsgISAtZCBcInNpdGVzLyR7U0lURV9OQU1FfVwiIF0gfHwgWyAhIC1mIFwic2l0ZXMvJHtTSVRFX05BTUV9L3NpdGVfY29uZmlnLmpzb25cIiBdOyBkb1xuICAgICAgICAgIGVjaG8gXCJXYWl0aW5nIGZvciBzaXRlICR7U0lURV9OQU1FfSB0byBiZSBjcmVhdGVkIGFuZCByZWFkeS4uLlwiO1xuICAgICAgICAgIHNsZWVwIDI7XG4gICAgICAgICAgaWYgKCggYGRhdGUgKyVzYC1zdGFydCA+IDMwMCApKTsgdGhlblxuICAgICAgICAgICAgZWNobyBcIlRpbWVvdXQgd2FpdGluZyBmb3Igc2l0ZSB0byBiZSByZWFkeVwiO1xuICAgICAgICAgICAgZWNobyBcIkNoZWNraW5nIHNpdGVzIGRpcmVjdG9yeTpcIjtcbiAgICAgICAgICAgIGxzIC1sYSBzaXRlcy8gfHwgZWNobyBcInNpdGVzIGRpcmVjdG9yeSBub3QgZm91bmRcIjtcbiAgICAgICAgICAgIGVjaG8gXCJDaGVja2luZyBzaXRlcy50eHQ6XCI7XG4gICAgICAgICAgICBjYXQgc2l0ZXMvc2l0ZXMudHh0IDI+L2Rldi9udWxsIHx8IGVjaG8gXCJzaXRlcy50eHQgbm90IGZvdW5kXCI7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBmaVxuICAgICAgICBkb25lO1xuICAgICAgICBpZiBbIC1mIFwic2l0ZXMvc2l0ZXMudHh0XCIgXSAmJiBbIC1kIFwic2l0ZXMvJHtTSVRFX05BTUV9XCIgXSAmJiBbIC1mIFwic2l0ZXMvJHtTSVRFX05BTUV9L3NpdGVfY29uZmlnLmpzb25cIiBdOyB0aGVuXG4gICAgICAgICAgZWNobyBcIlNpdGUgJHtTSVRFX05BTUV9IGlzIHJlYWR5IVwiO1xuICAgICAgICAgIGVjaG8gXCJzaXRlcy50eHQgY29udGVudHM6XCI7XG4gICAgICAgICAgY2F0IHNpdGVzL3NpdGVzLnR4dDtcbiAgICAgICAgICBlY2hvIFwiVmVyaWZ5aW5nIHNpdGUgaXMgYWNjZXNzaWJsZSB2aWEgYmVuY2guLi5cIjtcbiAgICAgICAgICBiZW5jaCAtLXNpdGUgJHtTSVRFX05BTUV9IGxpc3QtYXBwcyA+IC9kZXYvbnVsbCAyPiYxICYmIGVjaG8gXCJTaXRlIGlzIGFjY2Vzc2libGUgdmlhIGJlbmNoXCIgfHwgZWNobyBcIldhcm5pbmc6IFNpdGUgYWNjZXNzaWJpbGl0eSBjaGVjayB2aWEgYmVuY2ggZmFpbGVkXCI7XG4gICAgICAgICAgZWNobyBcIlNpdGUgZGlyZWN0b3J5IHN0cnVjdHVyZTpcIjtcbiAgICAgICAgICBscyAtbGEgc2l0ZXMvJHtTSVRFX05BTUV9LyB8IGhlYWQgLTEwO1xuICAgICAgICAgIGlmIFsgLW4gXCIke01BSU5fRE9NQUlOfVwiIF07IHRoZW5cbiAgICAgICAgICAgIGVjaG8gXCJVcGRhdGluZyBob3N0X25hbWUgYW5kIFNTTCBzZXR0aW5ncyB0byBodHRwczovLyR7TUFJTl9ET01BSU59IChlbnN1cmluZyBjb3JyZWN0IGRvbWFpbiBmb3IgZW1haWxzKS4uLlwiO1xuICAgICAgICAgICAgYmVuY2ggLS1zaXRlICR7U0lURV9OQU1FfSBzZXQtY29uZmlnIGhvc3RfbmFtZSBcImh0dHBzOi8vJHtNQUlOX0RPTUFJTn1cIiB8fCBlY2hvIFwiV2FybmluZzogQ291bGQgbm90IHVwZGF0ZSBob3N0X25hbWVcIjtcbiAgICAgICAgICAgIGJlbmNoIC0tc2l0ZSAke1NJVEVfTkFNRX0gc2V0LWNvbmZpZyBob3N0X3VybCBcImh0dHBzOi8vJHtNQUlOX0RPTUFJTn1cIiB8fCBlY2hvIFwiV2FybmluZzogQ291bGQgbm90IHVwZGF0ZSBob3N0X3VybFwiO1xuICAgICAgICAgICAgYmVuY2ggLS1zaXRlICR7U0lURV9OQU1FfSBzZXQtY29uZmlnIHVzZV9zc2wgMSB8fCBlY2hvIFwiV2FybmluZzogQ291bGQgbm90IHNldCB1c2Vfc3NsXCI7XG4gICAgICAgICAgICBlY2hvIFwiVmVyaWZ5aW5nIGNvbmZpZ3VyYXRpb24uLi5cIjtcbiAgICAgICAgICAgIGJlbmNoIC0tc2l0ZSAke1NJVEVfTkFNRX0gZ2V0LWNvbmZpZyBob3N0X25hbWUgMj4vZGV2L251bGwgfHwgZWNobyBcIkNvdWxkIG5vdCByZWFkIGhvc3RfbmFtZSAodGhpcyBpcyBPSyBpZiBzaXRlIGlzIG5vdCBmdWxseSBpbml0aWFsaXplZClcIjtcbiAgICAgICAgICAgIGVjaG8gXCJDbGVhcmluZyBjYWNoZSB0byBhcHBseSBuZXcgZG9tYWluIHNldHRpbmdzLi4uXCI7XG4gICAgICAgICAgICBiZW5jaCAtLXNpdGUgJHtTSVRFX05BTUV9IGNsZWFyLWNhY2hlIHx8IGVjaG8gXCJXYXJuaW5nOiBDb3VsZCBub3QgY2xlYXIgY2FjaGVcIjtcbiAgICAgICAgICAgIGJlbmNoIC0tc2l0ZSAke1NJVEVfTkFNRX0gY2xlYXItd2Vic2l0ZS1jYWNoZSB8fCBlY2hvIFwiV2FybmluZzogQ291bGQgbm90IGNsZWFyIHdlYnNpdGUgY2FjaGVcIjtcbiAgICAgICAgICBmaTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGVjaG8gXCJXYXJuaW5nOiBTaXRlIG1heSBub3QgYmUgZnVsbHkgcmVhZHksIGJ1dCBzdGFydGluZyBiYWNrZW5kIGFueXdheVwiO1xuICAgICAgICBmaTtcbiAgICAgICAgZWNobyBcIlN0YXJ0aW5nIGJlbmNoIHNlcnZlIChwcm9kdWN0aW9uLXJlYWR5KVwiO1xuICAgICAgICBleHBvcnQgUFlUSE9OVU5CVUZGRVJFRD0xO1xuICAgICAgICBiZW5jaCBzZXJ2ZSAtLXBvcnQgODAwMCAyPiYxIHwgYXdrICchLzEyN1xcLjBcXC4wXFwuMS4qNDAwLyB7cHJpbnR9JyB8fCBiZW5jaCBzZXJ2ZSAtLXBvcnQgODAwMDtcbiAgICB2b2x1bWVzOlxuICAgICAgLSBzaXRlczovaG9tZS9mcmFwcGUvZnJhcHBlLWJlbmNoL3NpdGVzXG4gICAgICAtIGFwcHM6L2hvbWUvZnJhcHBlL2ZyYXBwZS1iZW5jaC9hcHBzXG4gICAgZW52aXJvbm1lbnQ6XG4gICAgICBTSVRFX05BTUU6ICR7U0lURV9OQU1FfVxuICAgICAgRlJBUFBFX1NJVEVfTkFNRV9IRUFERVI6IFwiXCJcbiAgICAgIE1BSU5fRE9NQUlOOiAke01BSU5fRE9NQUlOfVxuICAgIGRlcGVuZHNfb246XG4gICAgICBjb25maWd1cmF0b3I6XG4gICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9jb21wbGV0ZWRfc3VjY2Vzc2Z1bGx5XG4gICAgICAgIHJlcXVpcmVkOiB0cnVlXG4gICAgICBjcmVhdGUtc2l0ZTpcbiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2NvbXBsZXRlZF9zdWNjZXNzZnVsbHlcbiAgICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICBoZWFsdGhjaGVjazpcbiAgICAgIHRlc3Q6XG4gICAgICAgIC0gQ01EXG4gICAgICAgIC0gd2FpdC1mb3ItaXRcbiAgICAgICAgLSAnMC4wLjAuMDo4MDAwJ1xuICAgICAgaW50ZXJ2YWw6IDJzXG4gICAgICB0aW1lb3V0OiAxMHNcbiAgICAgIHJldHJpZXM6IDMwXG5cbiAgZnJvbnRlbmQ6XG4gICAgPDw6ICpjdXN0b21faW1hZ2VcbiAgICBlbnRyeXBvaW50OiBbXCJiYXNoXCIsIFwiLWNcIl1cbiAgICBjb21tYW5kOlxuICAgICAgLSA+XG4gICAgICAgIGVjaG8gXCJTdGFydGluZyBOZ2lueCB3aXRoIHBvcnRfaW5fcmVkaXJlY3QgZml4Li4uXCI7XG4gICAgICAgIG5naW54LWVudHJ5cG9pbnQuc2ggJlxuICAgICAgICBOR0lOWF9QSUQ9JCE7XG4gICAgICAgIHNsZWVwIDM7XG4gICAgICAgIGlmIFsgLWYgL2V0Yy9uZ2lueC9jb25mLmQvZnJhcHBlLmNvbmYgXTsgdGhlblxuICAgICAgICAgIGlmICEgZ3JlcCAtcSBcInBvcnRfaW5fcmVkaXJlY3Qgb2ZmXCIgL2V0Yy9uZ2lueC9jb25mLmQvZnJhcHBlLmNvbmY7IHRoZW5cbiAgICAgICAgICAgIGVjaG8gXCJBcHBseWluZyBwb3J0X2luX3JlZGlyZWN0IGZpeCB0byBwcmV2ZW50IDo4MDgwIGluIFVSTHMuLi5cIjtcbiAgICAgICAgICAgIHNlZCAtaSAncy9saXN0ZW4gODA4MDsvbGlzdGVuIDgwODA7XFxuICAgIHBvcnRfaW5fcmVkaXJlY3Qgb2ZmO1xcbiAgICBhYnNvbHV0ZV9yZWRpcmVjdCBvZmY7LycgL2V0Yy9uZ2lueC9jb25mLmQvZnJhcHBlLmNvbmY7XG4gICAgICAgICAgICBlY2hvIFwiTmdpbnggY29uZmlnIHVwZGF0ZWQgLSByZWxvYWRpbmcuLi5cIjtcbiAgICAgICAgICAgIHNsZWVwIDE7XG4gICAgICAgICAgICBuZ2lueCAtcyByZWxvYWQgMj4vZGV2L251bGwgfHwgZWNobyBcIk5naW54IHdpbGwgdXNlIHVwZGF0ZWQgY29uZmlnIG9uIG5leHQgcmVsb2FkXCI7XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZWNobyBcIk5naW54IGNvbmZpZyBhbHJlYWR5IGhhcyBwb3J0X2luX3JlZGlyZWN0IHNldHRpbmdzXCI7XG4gICAgICAgICAgZmlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGVjaG8gXCJXYXJuaW5nOiBmcmFwcGUuY29uZiBub3QgZm91bmQgeWV0LCB3aWxsIGNoZWNrIGFnYWluXCI7XG4gICAgICAgICAgc2xlZXAgMjtcbiAgICAgICAgICBpZiBbIC1mIC9ldGMvbmdpbngvY29uZi5kL2ZyYXBwZS5jb25mIF07IHRoZW5cbiAgICAgICAgICAgIGlmICEgZ3JlcCAtcSBcInBvcnRfaW5fcmVkaXJlY3Qgb2ZmXCIgL2V0Yy9uZ2lueC9jb25mLmQvZnJhcHBlLmNvbmY7IHRoZW5cbiAgICAgICAgICAgICAgc2VkIC1pICdzL2xpc3RlbiA4MDgwOy9saXN0ZW4gODA4MDtcXG4gICAgcG9ydF9pbl9yZWRpcmVjdCBvZmY7XFxuICAgIGFic29sdXRlX3JlZGlyZWN0IG9mZjsvJyAvZXRjL25naW54L2NvbmYuZC9mcmFwcGUuY29uZjtcbiAgICAgICAgICAgICAgbmdpbnggLXMgcmVsb2FkIDI+L2Rldi9udWxsIHx8IHRydWU7XG4gICAgICAgICAgICBmaVxuICAgICAgICAgIGZpXG4gICAgICAgIGZpO1xuICAgICAgICB3YWl0ICROR0lOWF9QSURcbiAgICBkZXBlbmRzX29uOlxuICAgICAgYmFja2VuZDpcbiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX3N0YXJ0ZWRcbiAgICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICAgIHdlYnNvY2tldDpcbiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX3N0YXJ0ZWRcbiAgICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICBlbnZpcm9ubWVudDpcbiAgICAgIEJBQ0tFTkQ6IGJhY2tlbmQ6ODAwMFxuICAgICAgRlJBUFBFX1NJVEVfTkFNRV9IRUFERVI6IFwiXCJcbiAgICAgIFNPQ0tFVElPOiB3ZWJzb2NrZXQ6OTAwMFxuICAgICAgVVBTVFJFQU1fUkVBTF9JUF9BRERSRVNTOiAxMjcuMC4wLjFcbiAgICAgIFVQU1RSRUFNX1JFQUxfSVBfSEVBREVSOiBYLUZvcndhcmRlZC1Gb3JcbiAgICAgIFVQU1RSRUFNX1JFQUxfSVBfUkVDVVJTSVZFOiBcIm9mZlwiXG4gICAgICBVU0VfWF9GT1JXQVJERURfSE9TVDogXCIxXCJcbiAgICAgIFBST1hZX0ZJWDogXCIxXCJcbiAgICAgIFhfRk9SV0FSREVEX1BST1RPOiBcImh0dHBzXCJcbiAgICB2b2x1bWVzOlxuICAgICAgLSBzaXRlczovaG9tZS9mcmFwcGUvZnJhcHBlLWJlbmNoL3NpdGVzXG4gICAgICAtIGFwcHM6L2hvbWUvZnJhcHBlL2ZyYXBwZS1iZW5jaC9hcHBzXG4gICAgXG4gICAgaGVhbHRoY2hlY2s6XG4gICAgICB0ZXN0OlxuICAgICAgICAtIENNRC1TSEVMTFxuICAgICAgICAtIGN1cmwgLWZzUyBodHRwOi8vMTI3LjAuMC4xOjgwODAvbG9naW4gfHwgZXhpdCAxXG4gICAgICBpbnRlcnZhbDogMzBzXG4gICAgICB0aW1lb3V0OiA1c1xuICAgICAgcmV0cmllczogM1xuXG4gIHF1ZXVlLWRlZmF1bHQ6XG4gICAgPDw6ICpjdXN0b21faW1hZ2VcbiAgICBlbnRyeXBvaW50OiBbXCJiYXNoXCIsIFwiLWNcIl1cbiAgICBjb21tYW5kOlxuICAgICAgLSA+XG4gICAgICAgIGNkIC9ob21lL2ZyYXBwZS9mcmFwcGUtYmVuY2g7XG4gICAgICAgIGV4cG9ydCBzdGFydD1gZGF0ZSArJXNgO1xuICAgICAgICB3aGlsZSBbICEgLWQgXCJhcHBzL2xlbmRpbmdcIiBdOyBkb1xuICAgICAgICAgIGVjaG8gXCJXYWl0aW5nIGZvciBhcHBzIHRvIGJlIGF2YWlsYWJsZS4uLlwiO1xuICAgICAgICAgIHNsZWVwIDI7XG4gICAgICAgICAgaWYgKCggYGRhdGUgKyVzYC1zdGFydCA+IDMwMCApKTsgdGhlblxuICAgICAgICAgICAgZWNobyBcIlRpbWVvdXQgd2FpdGluZyBmb3IgYXBwc1wiO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZmk7XG4gICAgICAgIGRvbmU7XG4gICAgICAgIGlmIFsgLWQgXCJhcHBzL2xlbmRpbmdcIiBdICYmICEgLi9lbnYvYmluL3BpcCBzaG93IGxlbmRpbmcgPiAvZGV2L251bGwgMj4mMTsgdGhlblxuICAgICAgICAgIGVjaG8gXCJJbnN0YWxsaW5nIGxlbmRpbmcgYXBwIGluIFB5dGhvbiBlbnZpcm9ubWVudC4uLlwiO1xuICAgICAgICAgIC4vZW52L2Jpbi9waXAgaW5zdGFsbCAtZSBhcHBzL2xlbmRpbmcgfHwgZWNobyBcIkZhaWxlZCB0byBpbnN0YWxsIGxlbmRpbmdcIjtcbiAgICAgICAgZmk7XG4gICAgICAgIGV4ZWMgYmVuY2ggd29ya2VyIC0tcXVldWUgZGVmYXVsdFxuICAgIHZvbHVtZXM6XG4gICAgICAtIHNpdGVzOi9ob21lL2ZyYXBwZS9mcmFwcGUtYmVuY2gvc2l0ZXNcbiAgICAgIC0gYXBwczovaG9tZS9mcmFwcGUvZnJhcHBlLWJlbmNoL2FwcHNcbiAgICBoZWFsdGhjaGVjazpcbiAgICAgIHRlc3Q6XG4gICAgICAgIC0gQ01EXG4gICAgICAgIC0gd2FpdC1mb3ItaXRcbiAgICAgICAgLSAncmVkaXMtcXVldWU6NjM3OSdcbiAgICAgIGludGVydmFsOiAyc1xuICAgICAgdGltZW91dDogMTBzXG4gICAgICByZXRyaWVzOiAzMFxuICAgIGRlcGVuZHNfb246XG4gICAgICBjb25maWd1cmF0b3I6XG4gICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9jb21wbGV0ZWRfc3VjY2Vzc2Z1bGx5XG4gICAgICAgIHJlcXVpcmVkOiB0cnVlXG5cbiAgcXVldWUtbG9uZzpcbiAgICA8PDogKmN1c3RvbV9pbWFnZVxuICAgIGVudHJ5cG9pbnQ6IFtcImJhc2hcIiwgXCItY1wiXVxuICAgIGNvbW1hbmQ6XG4gICAgICAtID5cbiAgICAgICAgY2QgL2hvbWUvZnJhcHBlL2ZyYXBwZS1iZW5jaDtcbiAgICAgICAgZXhwb3J0IHN0YXJ0PWBkYXRlICslc2A7XG4gICAgICAgIHdoaWxlIFsgISAtZCBcImFwcHMvbGVuZGluZ1wiIF07IGRvXG4gICAgICAgICAgZWNobyBcIldhaXRpbmcgZm9yIGFwcHMgdG8gYmUgYXZhaWxhYmxlLi4uXCI7XG4gICAgICAgICAgc2xlZXAgMjtcbiAgICAgICAgICBpZiAoKCBgZGF0ZSArJXNgLXN0YXJ0ID4gMzAwICkpOyB0aGVuXG4gICAgICAgICAgICBlY2hvIFwiVGltZW91dCB3YWl0aW5nIGZvciBhcHBzXCI7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBmaTtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgaWYgWyAtZCBcImFwcHMvbGVuZGluZ1wiIF0gJiYgISAuL2Vudi9iaW4vcGlwIHNob3cgbGVuZGluZyA+IC9kZXYvbnVsbCAyPiYxOyB0aGVuXG4gICAgICAgICAgZWNobyBcIkluc3RhbGxpbmcgbGVuZGluZyBhcHAgaW4gUHl0aG9uIGVudmlyb25tZW50Li4uXCI7XG4gICAgICAgICAgLi9lbnYvYmluL3BpcCBpbnN0YWxsIC1lIGFwcHMvbGVuZGluZyB8fCBlY2hvIFwiRmFpbGVkIHRvIGluc3RhbGwgbGVuZGluZ1wiO1xuICAgICAgICBmaTtcbiAgICAgICAgZXhlYyBiZW5jaCB3b3JrZXIgLS1xdWV1ZSBsb25nXG4gICAgdm9sdW1lczpcbiAgICAgIC0gc2l0ZXM6L2hvbWUvZnJhcHBlL2ZyYXBwZS1iZW5jaC9zaXRlc1xuICAgICAgLSBhcHBzOi9ob21lL2ZyYXBwZS9mcmFwcGUtYmVuY2gvYXBwc1xuICAgIGhlYWx0aGNoZWNrOlxuICAgICAgdGVzdDpcbiAgICAgICAgLSBDTURcbiAgICAgICAgLSB3YWl0LWZvci1pdFxuICAgICAgICAtICdyZWRpcy1xdWV1ZTo2Mzc5J1xuICAgICAgaW50ZXJ2YWw6IDJzXG4gICAgICB0aW1lb3V0OiAxMHNcbiAgICAgIHJldHJpZXM6IDMwXG4gICAgZGVwZW5kc19vbjpcbiAgICAgIGNvbmZpZ3VyYXRvcjpcbiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2NvbXBsZXRlZF9zdWNjZXNzZnVsbHlcbiAgICAgICAgcmVxdWlyZWQ6IHRydWVcblxuICBxdWV1ZS1zaG9ydDpcbiAgICA8PDogKmN1c3RvbV9pbWFnZVxuICAgIGVudHJ5cG9pbnQ6IFtcImJhc2hcIiwgXCItY1wiXVxuICAgIGNvbW1hbmQ6XG4gICAgICAtID5cbiAgICAgICAgY2QgL2hvbWUvZnJhcHBlL2ZyYXBwZS1iZW5jaDtcbiAgICAgICAgZXhwb3J0IHN0YXJ0PWBkYXRlICslc2A7XG4gICAgICAgIHdoaWxlIFsgISAtZCBcImFwcHMvbGVuZGluZ1wiIF07IGRvXG4gICAgICAgICAgZWNobyBcIldhaXRpbmcgZm9yIGFwcHMgdG8gYmUgYXZhaWxhYmxlLi4uXCI7XG4gICAgICAgICAgc2xlZXAgMjtcbiAgICAgICAgICBpZiAoKCBgZGF0ZSArJXNgLXN0YXJ0ID4gMzAwICkpOyB0aGVuXG4gICAgICAgICAgICBlY2hvIFwiVGltZW91dCB3YWl0aW5nIGZvciBhcHBzXCI7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBmaTtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgaWYgWyAtZCBcImFwcHMvbGVuZGluZ1wiIF0gJiYgISAuL2Vudi9iaW4vcGlwIHNob3cgbGVuZGluZyA+IC9kZXYvbnVsbCAyPiYxOyB0aGVuXG4gICAgICAgICAgZWNobyBcIkluc3RhbGxpbmcgbGVuZGluZyBhcHAgaW4gUHl0aG9uIGVudmlyb25tZW50Li4uXCI7XG4gICAgICAgICAgLi9lbnYvYmluL3BpcCBpbnN0YWxsIC1lIGFwcHMvbGVuZGluZyB8fCBlY2hvIFwiRmFpbGVkIHRvIGluc3RhbGwgbGVuZGluZ1wiO1xuICAgICAgICBmaTtcbiAgICAgICAgZXhlYyBiZW5jaCB3b3JrZXIgLS1xdWV1ZSBzaG9ydFxuICAgIHZvbHVtZXM6XG4gICAgICAtIHNpdGVzOi9ob21lL2ZyYXBwZS9mcmFwcGUtYmVuY2gvc2l0ZXNcbiAgICAgIC0gYXBwczovaG9tZS9mcmFwcGUvZnJhcHBlLWJlbmNoL2FwcHNcbiAgICBoZWFsdGhjaGVjazpcbiAgICAgIHRlc3Q6XG4gICAgICAgIC0gQ01EXG4gICAgICAgIC0gd2FpdC1mb3ItaXRcbiAgICAgICAgLSAncmVkaXMtcXVldWU6NjM3OSdcbiAgICAgIGludGVydmFsOiAyc1xuICAgICAgdGltZW91dDogMTBzXG4gICAgICByZXRyaWVzOiAzMFxuICAgIGRlcGVuZHNfb246XG4gICAgICBjb25maWd1cmF0b3I6XG4gICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9jb21wbGV0ZWRfc3VjY2Vzc2Z1bGx5XG4gICAgICAgIHJlcXVpcmVkOiB0cnVlXG5cbiAgc2NoZWR1bGVyOlxuICAgIDw8OiAqY3VzdG9tX2ltYWdlXG4gICAgZW50cnlwb2ludDogW1wiYmFzaFwiLCBcIi1jXCJdXG4gICAgY29tbWFuZDpcbiAgICAgIC0gPlxuICAgICAgICBjZCAvaG9tZS9mcmFwcGUvZnJhcHBlLWJlbmNoO1xuICAgICAgICBleHBvcnQgc3RhcnQ9YGRhdGUgKyVzYDtcbiAgICAgICAgd2hpbGUgWyAhIC1kIFwiYXBwcy9sZW5kaW5nXCIgXTsgZG9cbiAgICAgICAgICBlY2hvIFwiV2FpdGluZyBmb3IgYXBwcyB0byBiZSBhdmFpbGFibGUuLi5cIjtcbiAgICAgICAgICBzbGVlcCAyO1xuICAgICAgICAgIGlmICgoIGBkYXRlICslc2Atc3RhcnQgPiAzMDAgKSk7IHRoZW5cbiAgICAgICAgICAgIGVjaG8gXCJUaW1lb3V0IHdhaXRpbmcgZm9yIGFwcHNcIjtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGZpO1xuICAgICAgICBkb25lO1xuICAgICAgICBpZiBbIC1kIFwiYXBwcy9sZW5kaW5nXCIgXSAmJiAhIC4vZW52L2Jpbi9waXAgc2hvdyBsZW5kaW5nID4gL2Rldi9udWxsIDI+JjE7IHRoZW5cbiAgICAgICAgICBlY2hvIFwiSW5zdGFsbGluZyBsZW5kaW5nIGFwcCBpbiBQeXRob24gZW52aXJvbm1lbnQuLi5cIjtcbiAgICAgICAgICAuL2Vudi9iaW4vcGlwIGluc3RhbGwgLWUgYXBwcy9sZW5kaW5nIHx8IGVjaG8gXCJGYWlsZWQgdG8gaW5zdGFsbCBsZW5kaW5nXCI7XG4gICAgICAgIGZpO1xuICAgICAgICBleGVjIGJlbmNoIHNjaGVkdWxlXG4gICAgaGVhbHRoY2hlY2s6XG4gICAgICB0ZXN0OlxuICAgICAgICAtIENNRFxuICAgICAgICAtIHdhaXQtZm9yLWl0XG4gICAgICAgIC0gJ3JlZGlzLXF1ZXVlOjYzNzknXG4gICAgICBpbnRlcnZhbDogMnNcbiAgICAgIHRpbWVvdXQ6IDEwc1xuICAgICAgcmV0cmllczogMzBcbiAgICBkZXBlbmRzX29uOlxuICAgICAgY29uZmlndXJhdG9yOlxuICAgICAgICBjb25kaXRpb246IHNlcnZpY2VfY29tcGxldGVkX3N1Y2Nlc3NmdWxseVxuICAgICAgICByZXF1aXJlZDogdHJ1ZVxuICAgIHZvbHVtZXM6XG4gICAgICAtIHNpdGVzOi9ob21lL2ZyYXBwZS9mcmFwcGUtYmVuY2gvc2l0ZXNcbiAgICAgIC0gYXBwczovaG9tZS9mcmFwcGUvZnJhcHBlLWJlbmNoL2FwcHNcblxuICB3ZWJzb2NrZXQ6XG4gICAgPDw6ICpjdXN0b21faW1hZ2VcbiAgICBoZWFsdGhjaGVjazpcbiAgICAgIHRlc3Q6XG4gICAgICAgIC0gQ01EXG4gICAgICAgIC0gd2FpdC1mb3ItaXRcbiAgICAgICAgLSAnMC4wLjAuMDo5MDAwJ1xuICAgICAgaW50ZXJ2YWw6IDJzXG4gICAgICB0aW1lb3V0OiAxMHNcbiAgICAgIHJldHJpZXM6IDMwXG4gICAgY29tbWFuZDpcbiAgICAgIC0gbm9kZVxuICAgICAgLSAvaG9tZS9mcmFwcGUvZnJhcHBlLWJlbmNoL2FwcHMvZnJhcHBlL3NvY2tldGlvLmpzXG4gICAgZGVwZW5kc19vbjpcbiAgICAgIGNvbmZpZ3VyYXRvcjpcbiAgICAgICAgY29uZGl0aW9uOiBzZXJ2aWNlX2NvbXBsZXRlZF9zdWNjZXNzZnVsbHlcbiAgICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICB2b2x1bWVzOlxuICAgICAgLSBzaXRlczovaG9tZS9mcmFwcGUvZnJhcHBlLWJlbmNoL3NpdGVzXG4gICAgICAtIGFwcHM6L2hvbWUvZnJhcHBlL2ZyYXBwZS1iZW5jaC9hcHBzXG5cbiAgY29uZmlndXJhdG9yOlxuICAgIDw8OiAqY3VzdG9tX2ltYWdlXG4gICAgZGVwbG95OlxuICAgICAgbW9kZTogcmVwbGljYXRlZFxuICAgICAgcmVwbGljYXM6ICR7Q09ORklHVVJFOi0wfVxuICAgICAgcmVzdGFydF9wb2xpY3k6XG4gICAgICAgIGNvbmRpdGlvbjogbm9uZVxuICAgIGVudHJ5cG9pbnQ6IFtcImJhc2hcIiwgXCItY1wiXVxuICAgIGNvbW1hbmQ6XG4gICAgICAtID5cbiAgICAgICAgW1sgJCR7UkVHRU5FUkFURV9BUFBTX1RYVH0gPT0gXCIxXCIgXV0gJiYgbHMgLTEgYXBwcyA+IHNpdGVzL2FwcHMudHh0O1xuICAgICAgICBbWyAtbiBgZ3JlcCAtaHMgXiBzaXRlcy9jb21tb25fc2l0ZV9jb25maWcuanNvbiB8IGpxIC1yIFwiLmRiX2hvc3QgLy8gZW1wdHlcImAgXV0gJiYgZXhpdCAwO1xuICAgICAgICBiZW5jaCBzZXQtY29uZmlnIC1nIGRiX2hvc3QgJCREQl9IT1NUO1xuICAgICAgICBiZW5jaCBzZXQtY29uZmlnIC1ncCBkYl9wb3J0ICQkREJfUE9SVDtcbiAgICAgICAgYmVuY2ggc2V0LWNvbmZpZyAtZyByZWRpc19jYWNoZSBcInJlZGlzOi8vJCRSRURJU19DQUNIRVwiO1xuICAgICAgICBiZW5jaCBzZXQtY29uZmlnIC1nIHJlZGlzX3F1ZXVlIFwicmVkaXM6Ly8kJFJFRElTX1FVRVVFXCI7XG4gICAgICAgIGJlbmNoIHNldC1jb25maWcgLWcgcmVkaXNfc29ja2V0aW8gXCJyZWRpczovLyQkUkVESVNfUVVFVUVcIjtcbiAgICAgICAgYmVuY2ggc2V0LWNvbmZpZyAtZ3Agc29ja2V0aW9fcG9ydCAkJFNPQ0tFVElPX1BPUlQ7XG4gICAgZW52aXJvbm1lbnQ6XG4gICAgICBEQl9IT1NUOiBcIiR7REJfSE9TVDotZGJ9XCJcbiAgICAgIERCX1BPUlQ6IFwiMzMwNlwiXG4gICAgICBSRURJU19DQUNIRTogcmVkaXMtY2FjaGU6NjM3OVxuICAgICAgUkVESVNfUVVFVUU6IHJlZGlzLXF1ZXVlOjYzNzlcbiAgICAgIFNPQ0tFVElPX1BPUlQ6IFwiOTAwMFwiXG4gICAgICBSRUdFTkVSQVRFX0FQUFNfVFhUOiBcIiR7UkVHRU5FUkFURV9BUFBTX1RYVDotMH1cIlxuICAgIHZvbHVtZXM6XG4gICAgICAtIHNpdGVzOi9ob21lL2ZyYXBwZS9mcmFwcGUtYmVuY2gvc2l0ZXNcbiAgICAgIC0gYXBwczovaG9tZS9mcmFwcGUvZnJhcHBlLWJlbmNoL2FwcHNcblxuICBjcmVhdGUtc2l0ZTpcbiAgICA8PDogKmN1c3RvbV9pbWFnZVxuICAgIGRlcGxveTpcbiAgICAgIG1vZGU6IHJlcGxpY2F0ZWRcbiAgICAgIHJlcGxpY2FzOiAke0NSRUFURV9TSVRFOi0wfVxuICAgICAgcmVzdGFydF9wb2xpY3k6XG4gICAgICAgIGNvbmRpdGlvbjogbm9uZVxuICAgIGVudHJ5cG9pbnQ6IFtcImJhc2hcIiwgXCItY1wiXVxuICAgIGNvbW1hbmQ6XG4gICAgICAtID5cbiAgICAgICAgd2FpdC1mb3ItaXQgLXQgMTIwICQkREJfSE9TVDokJERCX1BPUlQ7XG4gICAgICAgIHdhaXQtZm9yLWl0IC10IDEyMCByZWRpcy1jYWNoZTo2Mzc5O1xuICAgICAgICB3YWl0LWZvci1pdCAtdCAxMjAgcmVkaXMtcXVldWU6NjM3OTtcbiAgICAgICAgZXhwb3J0IHN0YXJ0PWBkYXRlICslc2A7XG4gICAgICAgIHVudGlsIFtbIC1uIGBncmVwIC1ocyBeIHNpdGVzL2NvbW1vbl9zaXRlX2NvbmZpZy5qc29uIHwganEgLXIgXCIuZGJfaG9zdCAvLyBlbXB0eVwiYCBdXSAmJiBcXFxuICAgICAgICAgIFtbIC1uIGBncmVwIC1ocyBeIHNpdGVzL2NvbW1vbl9zaXRlX2NvbmZpZy5qc29uIHwganEgLXIgXCIucmVkaXNfY2FjaGUgLy8gZW1wdHlcImAgXV0gJiYgXFxcbiAgICAgICAgICBbWyAtbiBgZ3JlcCAtaHMgXiBzaXRlcy9jb21tb25fc2l0ZV9jb25maWcuanNvbiB8IGpxIC1yIFwiLnJlZGlzX3F1ZXVlIC8vIGVtcHR5XCJgIF1dO1xuICAgICAgICBkb1xuICAgICAgICAgIGVjaG8gXCJXYWl0aW5nIGZvciBzaXRlcy9jb21tb25fc2l0ZV9jb25maWcuanNvbiB0byBiZSBjcmVhdGVkXCI7XG4gICAgICAgICAgc2xlZXAgNTtcbiAgICAgICAgICBpZiAoKCBgZGF0ZSArJXNgLXN0YXJ0ID4gMTIwICkpOyB0aGVuXG4gICAgICAgICAgICBlY2hvIFwiY291bGQgbm90IGZpbmQgc2l0ZXMvY29tbW9uX3NpdGVfY29uZmlnLmpzb24gd2l0aCByZXF1aXJlZCBrZXlzXCI7XG4gICAgICAgICAgICBleGl0IDFcbiAgICAgICAgICBmaVxuICAgICAgICBkb25lO1xuICAgICAgICBlY2hvIFwic2l0ZXMvY29tbW9uX3NpdGVfY29uZmlnLmpzb24gZm91bmRcIjtcbiAgICAgICAgY2QgL2hvbWUvZnJhcHBlL2ZyYXBwZS1iZW5jaDtcbiAgICAgICAgaWYgWyAtZCBcInNpdGVzLyR7U0lURV9OQU1FfVwiIF0gJiYgWyAtZiBcInNpdGVzLyR7U0lURV9OQU1FfS9zaXRlX2NvbmZpZy5qc29uXCIgXTsgdGhlblxuICAgICAgICAgIGVjaG8gXCJTaXRlICR7U0lURV9OQU1FfSBhbHJlYWR5IGV4aXN0cywgc2tpcHBpbmcgY3JlYXRpb25cIjtcbiAgICAgICAgICBiZW5jaCB1c2UgJCR7U0lURV9OQU1FfSB8fCBlY2hvIFwiV2FybmluZzogQ291bGQgbm90IHNldCBjdXJyZW50IHNpdGVcIjtcbiAgICAgICAgICBlY2hvIFwiJCR7U0lURV9OQU1FfVwiID4gc2l0ZXMvc2l0ZXMudHh0IHx8IGVjaG8gXCJXYXJuaW5nOiBDb3VsZCBub3QgdXBkYXRlIHNpdGVzLnR4dFwiO1xuICAgICAgICAgIGJlbmNoIHNldC1jb25maWcgLWcgZGVmYXVsdF9zaXRlICQke1NJVEVfTkFNRX0gfHwgZWNobyBcIldhcm5pbmc6IENvdWxkIG5vdCBzZXQgZGVmYXVsdCBzaXRlXCI7XG4gICAgICAgICAgaWYgWyAtbiBcIiQke0FETUlOX1BBU1NXT1JEfVwiIF07IHRoZW5cbiAgICAgICAgICAgIGVjaG8gXCJVcGRhdGluZyBhZG1pbiBwYXNzd29yZCBmb3IgZXhpc3Rpbmcgc2l0ZS4uLlwiO1xuICAgICAgICAgICAgYmVuY2ggLS1zaXRlICQke1NJVEVfTkFNRX0gc2V0LWFkbWluLXBhc3N3b3JkICQke0FETUlOX1BBU1NXT1JEfSB8fCBlY2hvIFwiV2FybmluZzogQ291bGQgbm90IHVwZGF0ZSBhZG1pbiBwYXNzd29yZCAobWF5IG5lZWQgdG8gYmUgZG9uZSBtYW51YWxseSlcIjtcbiAgICAgICAgICBmaTtcbiAgICAgICAgICBpZiBbIC1uIFwiJCR7TUFJTl9ET01BSU59XCIgXTsgdGhlblxuICAgICAgICAgICAgZWNobyBcIlNldHRpbmcgaG9zdF9uYW1lIGFuZCBTU0wgc2V0dGluZ3MgdG8gaHR0cHM6Ly8ke01BSU5fRE9NQUlOfSAod2l0aCBIVFRQUykuLi5cIjtcbiAgICAgICAgICAgIGJlbmNoIC0tc2l0ZSAkJHtTSVRFX05BTUV9IHNldC1jb25maWcgaG9zdF9uYW1lIFwiaHR0cHM6Ly8kJHtNQUlOX0RPTUFJTn1cIiB8fCBlY2hvIFwiV2FybmluZzogQ291bGQgbm90IHNldCBob3N0X25hbWVcIjtcbiAgICAgICAgICAgIGJlbmNoIC0tc2l0ZSAkJHtTSVRFX05BTUV9IHNldC1jb25maWcgaG9zdF91cmwgXCJodHRwczovLyQke01BSU5fRE9NQUlOfVwiIHx8IGVjaG8gXCJXYXJuaW5nOiBDb3VsZCBub3Qgc2V0IGhvc3RfdXJsXCI7XG4gICAgICAgICAgICBiZW5jaCAtLXNpdGUgJCR7U0lURV9OQU1FfSBzZXQtY29uZmlnIHVzZV9zc2wgMSB8fCBlY2hvIFwiV2FybmluZzogQ291bGQgbm90IHNldCB1c2Vfc3NsXCI7XG4gICAgICAgICAgICBlY2hvIFwiQ2xlYXJpbmcgY2FjaGUgdG8gYXBwbHkgbmV3IGRvbWFpbiBzZXR0aW5ncy4uLlwiO1xuICAgICAgICAgICAgYmVuY2ggLS1zaXRlICQke1NJVEVfTkFNRX0gY2xlYXItY2FjaGUgfHwgZWNobyBcIldhcm5pbmc6IENvdWxkIG5vdCBjbGVhciBjYWNoZVwiO1xuICAgICAgICAgICAgYmVuY2ggLS1zaXRlICQke1NJVEVfTkFNRX0gY2xlYXItd2Vic2l0ZS1jYWNoZSB8fCBlY2hvIFwiV2FybmluZzogQ291bGQgbm90IGNsZWFyIHdlYnNpdGUgY2FjaGVcIjtcbiAgICAgICAgICBmaTtcbiAgICAgICAgICBlY2hvIFwiVmVyaWZ5aW5nIGV4aXN0aW5nIHNpdGUgaXMgYWNjZXNzaWJsZS4uLlwiO1xuICAgICAgICAgIGJlbmNoIC0tc2l0ZSAkJHtTSVRFX05BTUV9IGxpc3QtYXBwcyA+IC9kZXYvbnVsbCAyPiYxICYmIGVjaG8gXCJFeGlzdGluZyBzaXRlIGlzIGFjY2Vzc2libGUgYW5kIHdvcmtpbmdcIiB8fCBlY2hvIFwiV2FybmluZzogU2l0ZSBhY2Nlc3NpYmlsaXR5IGNoZWNrIGZhaWxlZFwiO1xuICAgICAgICAgIGV4aXQgMDtcbiAgICAgICAgZmk7XG4gICAgICAgIGlmIFsgISAtZCBcImFwcHMvbGVuZGluZ1wiIF07IHRoZW5cbiAgICAgICAgICBlY2hvIFwiQ2xvbmluZyBsZW5kaW5nIGFwcC4uLlwiO1xuICAgICAgICAgIGdpdCBjbG9uZSBodHRwczovL2dpdGh1Yi5jb20vZnJhcHBlL2xlbmRpbmcuZ2l0IGFwcHMvbGVuZGluZyB8fCBlY2hvIFwiRmFpbGVkIHRvIGNsb25lIGxlbmRpbmcgYXBwXCI7XG4gICAgICAgIGZpO1xuICAgICAgICBpZiBbIC1kIFwiYXBwcy9sZW5kaW5nXCIgXTsgdGhlblxuICAgICAgICAgIGVjaG8gXCJJbnN0YWxsaW5nIGxlbmRpbmcgYXBwIGluIFB5dGhvbiBlbnZpcm9ubWVudC4uLlwiO1xuICAgICAgICAgIC4vZW52L2Jpbi9waXAgaW5zdGFsbCAtZSBhcHBzL2xlbmRpbmcgfHwgZWNobyBcIkZhaWxlZCB0byBpbnN0YWxsIGxlbmRpbmcgYXBwXCI7XG4gICAgICAgIGZpO1xuICAgICAgICBlY2hvIFwiUmVnZW5lcmF0aW5nIGFwcHMudHh0IHRvIGluY2x1ZGUgYWxsIGFwcHMuLi5cIjtcbiAgICAgICAgbHMgLTEgYXBwcyA+IHNpdGVzL2FwcHMudHh0IHx8IChlY2hvIFwiZnJhcHBlXCIgPiBzaXRlcy9hcHBzLnR4dCAmJiBlY2hvIFwibGVuZGluZ1wiID4+IHNpdGVzL2FwcHMudHh0KTtcbiAgICAgICAgZWNobyBcImFwcHMudHh0IGNvbnRlbnRzOlwiO1xuICAgICAgICBjYXQgc2l0ZXMvYXBwcy50eHQ7XG4gICAgICAgIGJlbmNoIHNldC1tYXJpYWRiLWhvc3QgJCR7REJfSE9TVDotZGJ9O1xuICAgICAgICBiZW5jaCBuZXctc2l0ZSAtLW1hcmlhZGItdXNlci1ob3N0LWxvZ2luLXNjb3BlPSclJyAtLWFkbWluLXBhc3N3b3JkPSQke0FETUlOX1BBU1NXT1JEfSAtLWRiLXJvb3QtdXNlcm5hbWU9cm9vdCAtLWRiLXJvb3QtcGFzc3dvcmQ9JCR7REJfUk9PVF9QQVNTV09SRH0gJCR7SU5TVEFMTF9BUFBfQVJHU30gJCR7U0lURV9OQU1FfTtcbiAgICAgICAgaWYgWyAhIC1kIFwic2l0ZXMvJHtTSVRFX05BTUV9XCIgXTsgdGhlblxuICAgICAgICAgIGVjaG8gXCJFUlJPUjogU2l0ZSAke1NJVEVfTkFNRX0gd2FzIG5vdCBjcmVhdGVkIHN1Y2Nlc3NmdWxseVwiO1xuICAgICAgICAgIGV4aXQgMTtcbiAgICAgICAgZmk7XG4gICAgICAgIGVjaG8gXCJTaXRlICR7U0lURV9OQU1FfSBjcmVhdGVkIHN1Y2Nlc3NmdWxseVwiO1xuICAgICAgICBiZW5jaCB1c2UgJCR7U0lURV9OQU1FfTtcbiAgICAgICAgZWNobyBcIkN1cnJlbnQgc2l0ZSBzZXQgdG86ICQke1NJVEVfTkFNRX1cIjtcbiAgICAgICAgaWYgWyAtZCBcImFwcHMvbGVuZGluZ1wiIF07IHRoZW5cbiAgICAgICAgICBlY2hvIFwiSW5zdGFsbGluZyBsZW5kaW5nIGFwcCBvbiBzaXRlLi4uXCI7XG4gICAgICAgICAgYmVuY2ggLS1zaXRlICQke1NJVEVfTkFNRX0gaW5zdGFsbC1hcHAgbGVuZGluZyB8fCBlY2hvIFwiTGVuZGluZyBhcHAgbWF5IGFscmVhZHkgYmUgaW5zdGFsbGVkIG9yIGZhaWxlZCB0byBpbnN0YWxsXCI7XG4gICAgICAgIGZpO1xuICAgICAgICBlY2hvIFwiQnVpbGRpbmcgYXNzZXRzIGZvciBhbGwgYXBwcyAodGhpcyBlbnN1cmVzIGxlbmRpbmcgSlMgaXMgYXZhaWxhYmxlKS4uLlwiO1xuICAgICAgICBiZW5jaCBidWlsZCAtLWFwcHMgbGVuZGluZyB8fCBlY2hvIFwiQXNzZXQgYnVpbGQgY29tcGxldGVkXCI7XG4gICAgICAgIGVjaG8gXCJDbGVhcmluZyBhbGwgY2FjaGVzLi4uXCI7XG4gICAgICAgIGJlbmNoIC0tc2l0ZSAkJHtTSVRFX05BTUV9IGNsZWFyLWNhY2hlIHx8IGVjaG8gXCJDYWNoZSBjbGVhcmVkXCI7XG4gICAgICAgIGJlbmNoIC0tc2l0ZSAkJHtTSVRFX05BTUV9IGNsZWFyLXdlYnNpdGUtY2FjaGUgfHwgZWNobyBcIldlYnNpdGUgY2FjaGUgY2xlYXJlZFwiO1xuICAgICAgICBlY2hvIFwiQ3JlYXRpbmcgc2l0ZXMudHh0IGZvciBzaXRlIHJlc29sdXRpb24uLi5cIjtcbiAgICAgICAgZWNobyBcIiQke1NJVEVfTkFNRX1cIiA+IHNpdGVzL3NpdGVzLnR4dCB8fCBlY2hvIFwiV2FybmluZzogQ291bGQgbm90IGNyZWF0ZSBzaXRlcy50eHRcIjtcbiAgICAgICAgZWNobyBcIlNpdGUgcmVnaXN0ZXJlZCBpbiBzaXRlcy50eHQ6XCI7XG4gICAgICAgIGNhdCBzaXRlcy9zaXRlcy50eHQgfHwgZWNobyBcInNpdGVzLnR4dCBub3QgZm91bmRcIjtcbiAgICAgICAgZWNobyBcIlZlcmlmeWluZyBzaXRlIGRpcmVjdG9yeSBhbmQgY29uZmlnIGV4aXN0Li4uXCI7XG4gICAgICAgIGlmIFsgLWQgXCJzaXRlcy8ke1NJVEVfTkFNRX1cIiBdICYmIFsgLWYgXCJzaXRlcy8ke1NJVEVfTkFNRX0vc2l0ZV9jb25maWcuanNvblwiIF07IHRoZW5cbiAgICAgICAgICBlY2hvIFwiU2l0ZSBkaXJlY3RvcnkgYW5kIGNvbmZpZyB2ZXJpZmllZCBzdWNjZXNzZnVsbHlcIjtcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGVjaG8gXCJXYXJuaW5nOiBTaXRlIGRpcmVjdG9yeSBvciBjb25maWcgZmlsZSBtaXNzaW5nXCI7XG4gICAgICAgICAgbHMgLWxhIHNpdGVzLyR7U0lURV9OQU1FfS8gMj4vZGV2L251bGwgfHwgZWNobyBcIlNpdGUgZGlyZWN0b3J5IGxpc3RpbmcgZmFpbGVkXCI7XG4gICAgICAgIGZpO1xuICAgICAgICBlY2hvIFwiU2V0dGluZyBkZWZhdWx0IHNpdGUgaW4gY29tbW9uX3NpdGVfY29uZmlnLmpzb24uLi5cIjtcbiAgICAgICAgYmVuY2ggc2V0LWNvbmZpZyAtZyBkZWZhdWx0X3NpdGUgJCR7U0lURV9OQU1FfSB8fCBlY2hvIFwiV2FybmluZzogQ291bGQgbm90IHNldCBkZWZhdWx0IHNpdGVcIjtcbiAgICAgICAgaWYgWyAtbiBcIiQke01BSU5fRE9NQUlOfVwiIF07IHRoZW5cbiAgICAgICAgICBlY2hvIFwiU2V0dGluZyBob3N0X25hbWUgYW5kIFNTTCBzZXR0aW5ncyB0byBodHRwczovLyR7TUFJTl9ET01BSU59ICh3aXRoIEhUVFBTKS4uLlwiO1xuICAgICAgICAgIGJlbmNoIC0tc2l0ZSAkJHtTSVRFX05BTUV9IHNldC1jb25maWcgaG9zdF9uYW1lIFwiaHR0cHM6Ly8kJHtNQUlOX0RPTUFJTn1cIiB8fCBlY2hvIFwiV2FybmluZzogQ291bGQgbm90IHNldCBob3N0X25hbWVcIjtcbiAgICAgICAgICBiZW5jaCAtLXNpdGUgJCR7U0lURV9OQU1FfSBzZXQtY29uZmlnIGhvc3RfdXJsIFwiaHR0cHM6Ly8kJHtNQUlOX0RPTUFJTn1cIiB8fCBlY2hvIFwiV2FybmluZzogQ291bGQgbm90IHNldCBob3N0X3VybFwiO1xuICAgICAgICAgIGJlbmNoIC0tc2l0ZSAkJHtTSVRFX05BTUV9IHNldC1jb25maWcgdXNlX3NzbCAxIHx8IGVjaG8gXCJXYXJuaW5nOiBDb3VsZCBub3Qgc2V0IHVzZV9zc2xcIjtcbiAgICAgICAgICBlY2hvIFwiQ2xlYXJpbmcgY2FjaGUgdG8gYXBwbHkgbmV3IGRvbWFpbiBzZXR0aW5ncy4uLlwiO1xuICAgICAgICAgIGJlbmNoIC0tc2l0ZSAkJHtTSVRFX05BTUV9IGNsZWFyLWNhY2hlIHx8IGVjaG8gXCJXYXJuaW5nOiBDb3VsZCBub3QgY2xlYXIgY2FjaGVcIjtcbiAgICAgICAgICBiZW5jaCAtLXNpdGUgJCR7U0lURV9OQU1FfSBjbGVhci13ZWJzaXRlLWNhY2hlIHx8IGVjaG8gXCJXYXJuaW5nOiBDb3VsZCBub3QgY2xlYXIgd2Vic2l0ZSBjYWNoZVwiO1xuICAgICAgICBmaTtcbiAgICAgICAgZWNobyBcIlZlcmlmeWluZyBzaXRlIGlzIGFjY2Vzc2libGUuLi5cIjtcbiAgICAgICAgYmVuY2ggLS1zaXRlICQke1NJVEVfTkFNRX0gbGlzdC1hcHBzID4gL2Rldi9udWxsIDI+JjEgJiYgZWNobyBcIlNpdGUgaXMgYWNjZXNzaWJsZSBhbmQgd29ya2luZ1wiIHx8IGVjaG8gXCJXYXJuaW5nOiBTaXRlIGFjY2Vzc2liaWxpdHkgY2hlY2sgZmFpbGVkXCI7XG4gICAgdm9sdW1lczpcbiAgICAgIC0gc2l0ZXM6L2hvbWUvZnJhcHBlL2ZyYXBwZS1iZW5jaC9zaXRlc1xuICAgICAgLSBhcHBzOi9ob21lL2ZyYXBwZS9mcmFwcGUtYmVuY2gvYXBwc1xuICAgIGVudmlyb25tZW50OlxuICAgICAgU0lURV9OQU1FOiAke1NJVEVfTkFNRX1cbiAgICAgIE1BSU5fRE9NQUlOOiAke21haW5fZG9tYWlufVxuICAgICAgQURNSU5fUEFTU1dPUkQ6ICR7QURNSU5fUEFTU1dPUkR9XG4gICAgICBEQl9IT1NUOiAke0RCX0hPU1Q6LWRifVxuICAgICAgREJfUE9SVDogXCIke0RCX1BPUlQ6LTMzMDZ9XCJcbiAgICAgIERCX1JPT1RfUEFTU1dPUkQ6ICR7REJfUk9PVF9QQVNTV09SRH1cbiAgICAgIElOU1RBTExfQVBQX0FSR1M6ICR7SU5TVEFMTF9BUFBfQVJHU31cblxuICBtaWdyYXRpb246XG4gICAgPDw6ICpjdXN0b21faW1hZ2VcbiAgICBkZXBsb3k6XG4gICAgICBtb2RlOiByZXBsaWNhdGVkXG4gICAgICByZXBsaWNhczogJHtNSUdSQVRFOi0wfVxuICAgICAgcmVzdGFydF9wb2xpY3k6XG4gICAgICAgIGNvbmRpdGlvbjogbm9uZVxuICAgIGVudHJ5cG9pbnQ6IFtcImJhc2hcIiwgXCItY1wiXVxuICAgIGNvbW1hbmQ6XG4gICAgICAtID5cbiAgICAgICAgY3VybCAtZiBodHRwOi8vJHtTSVRFX05BTUV9OjgwODAvYXBpL21ldGhvZC9waW5nIHx8IGVjaG8gXCJTaXRlIGJ1c3lcIiAmJiBleGl0IDA7XG4gICAgICAgIGJlbmNoIC0tc2l0ZSBhbGwgc2V0LWNvbmZpZyAtcCBtYWludGVuYW5jZV9tb2RlIDE7XG4gICAgICAgIGJlbmNoIC0tc2l0ZSBhbGwgc2V0LWNvbmZpZyAtcCBwYXVzZV9zY2hlZHVsZXIgMTtcbiAgICAgICAgYmVuY2ggLS1zaXRlIGFsbCBtaWdyYXRlO1xuICAgICAgICBiZW5jaCAtLXNpdGUgYWxsIHNldC1jb25maWcgLXAgbWFpbnRlbmFuY2VfbW9kZSAwO1xuICAgICAgICBiZW5jaCAtLXNpdGUgYWxsIHNldC1jb25maWcgLXAgcGF1c2Vfc2NoZWR1bGVyIDA7XG4gICAgdm9sdW1lczpcbiAgICAgIC0gc2l0ZXM6L2hvbWUvZnJhcHBlL2ZyYXBwZS1iZW5jaC9zaXRlc1xuICAgICAgLSBhcHBzOi9ob21lL2ZyYXBwZS9mcmFwcGUtYmVuY2gvYXBwc1xuXG4gIGRiOlxuICAgIGltYWdlOiBtYXJpYWRiOjEwLjZcbiAgICBkZXBsb3k6XG4gICAgICBtb2RlOiByZXBsaWNhdGVkXG4gICAgICByZXBsaWNhczogJHtFTkFCTEVfREI6LTB9XG4gICAgICByZXN0YXJ0X3BvbGljeTpcbiAgICAgICAgY29uZGl0aW9uOiBhbHdheXNcbiAgICBoZWFsdGhjaGVjazpcbiAgICAgIHRlc3Q6IG15c3FsYWRtaW4gcGluZyAtaCBsb2NhbGhvc3QgLS1wYXNzd29yZD0ke0RCX1JPT1RfUEFTU1dPUkR9XG4gICAgICBpbnRlcnZhbDogMXNcbiAgICAgIHJldHJpZXM6IDIwXG4gICAgY29tbWFuZDpcbiAgICAgIC0gLS1jaGFyYWN0ZXItc2V0LXNlcnZlcj11dGY4bWI0XG4gICAgICAtIC0tY29sbGF0aW9uLXNlcnZlcj11dGY4bWI0X3VuaWNvZGVfY2lcbiAgICAgIC0gLS1za2lwLWNoYXJhY3Rlci1zZXQtY2xpZW50LWhhbmRzaGFrZVxuICAgICAgLSAtLXNraXAtaW5ub2RiLXJlYWQtb25seS1jb21wcmVzc2VkXG4gICAgZW52aXJvbm1lbnQ6XG4gICAgICAtIE1ZU1FMX1JPT1RfUEFTU1dPUkQ9JHtEQl9ST09UX1BBU1NXT1JEfVxuICAgICAgLSBNQVJJQURCX1JPT1RfUEFTU1dPUkQ9JHtEQl9ST09UX1BBU1NXT1JEfVxuICAgIHZvbHVtZXM6XG4gICAgICAtIGRiLWRhdGE6L3Zhci9saWIvbXlzcWxcblxuICByZWRpcy1jYWNoZTpcbiAgICBkZXBsb3k6XG4gICAgICByZXN0YXJ0X3BvbGljeTpcbiAgICAgICAgY29uZGl0aW9uOiBhbHdheXNcbiAgICBpbWFnZTogcmVkaXM6Ni4yLWFscGluZVxuICAgIHZvbHVtZXM6XG4gICAgICAtIHJlZGlzLWNhY2hlLWRhdGE6L2RhdGFcbiAgICBoZWFsdGhjaGVjazpcbiAgICAgIHRlc3Q6XG4gICAgICAgIC0gQ01EXG4gICAgICAgIC0gcmVkaXMtY2xpXG4gICAgICAgIC0gcGluZ1xuICAgICAgaW50ZXJ2YWw6IDVzXG4gICAgICB0aW1lb3V0OiA1c1xuICAgICAgcmV0cmllczogM1xuXG4gIHJlZGlzLXF1ZXVlOlxuICAgIGRlcGxveTpcbiAgICAgIHJlc3RhcnRfcG9saWN5OlxuICAgICAgICBjb25kaXRpb246IGFsd2F5c1xuICAgIGltYWdlOiByZWRpczo2LjItYWxwaW5lXG4gICAgdm9sdW1lczpcbiAgICAgIC0gcmVkaXMtcXVldWUtZGF0YTovZGF0YVxuICAgIGhlYWx0aGNoZWNrOlxuICAgICAgdGVzdDpcbiAgICAgICAgLSBDTURcbiAgICAgICAgLSByZWRpcy1jbGlcbiAgICAgICAgLSBwaW5nXG4gICAgICBpbnRlcnZhbDogNXNcbiAgICAgIHRpbWVvdXQ6IDVzXG4gICAgICByZXRyaWVzOiAzXG5cbiAgcmVkaXMtc29ja2V0aW86XG4gICAgZGVwbG95OlxuICAgICAgcmVzdGFydF9wb2xpY3k6XG4gICAgICAgIGNvbmRpdGlvbjogYWx3YXlzXG4gICAgaW1hZ2U6IHJlZGlzOjYuMi1hbHBpbmVcbiAgICB2b2x1bWVzOlxuICAgICAgLSByZWRpcy1zb2NrZXRpby1kYXRhOi9kYXRhXG4gICAgaGVhbHRoY2hlY2s6XG4gICAgICB0ZXN0OlxuICAgICAgICAtIENNRFxuICAgICAgICAtIHJlZGlzLWNsaVxuICAgICAgICAtIHBpbmdcbiAgICAgIGludGVydmFsOiA1c1xuICAgICAgdGltZW91dDogNXNcbiAgICAgIHJldHJpZXM6IDNcblxudm9sdW1lczpcbiAgZGItZGF0YTpcbiAgcmVkaXMtY2FjaGUtZGF0YTpcbiAgcmVkaXMtcXVldWUtZGF0YTpcbiAgcmVkaXMtc29ja2V0aW8tZGF0YTpcbiAgc2l0ZXM6XG4gICAgZHJpdmVyX29wdHM6XG4gICAgICB0eXBlOiBcIiR7U0lURV9WT0xVTUVfVFlQRX1cIlxuICAgICAgbzogXCIke1NJVEVfVk9MVU1FX09QVFN9XCJcbiAgICAgIGRldmljZTogXCIke1NJVEVfVk9MVU1FX0RFVn1cIlxuICBhcHBzOiIsCiAgImNvbmZpZyI6ICJbdmFyaWFibGVzXVxubWFpbl9kb21haW4gPSBcIiR7ZG9tYWlufVwiXG5zaXRlX25hbWUgPSBcImZyYXBwZS5sZW5kaW5nXCJcbmRiX3Jvb3RfcGFzc3dvcmQgPSBcIiR7cGFzc3dvcmQ6MzJ9XCJcbmFkbWluX3Bhc3N3b3JkID0gXCIke3Bhc3N3b3JkOjMyfVwiXG5cbltjb25maWddXG5lbnYgPSBbXG4gIFwiU0lURV9OQU1FPSR7c2l0ZV9uYW1lfVwiLFxuICBcIkFETUlOX1BBU1NXT1JEPSR7YWRtaW5fcGFzc3dvcmR9XCIsXG4gIFwiREJfUk9PVF9QQVNTV09SRD0ke2RiX3Jvb3RfcGFzc3dvcmR9XCIsXG4gIFwiTUlHUkFURT0xXCIsXG4gIFwiRU5BQkxFX0RCPTFcIixcbiAgXCJEQl9IT1NUPWRiXCIsXG4gIFwiQ1JFQVRFX1NJVEU9MVwiLFxuICBcIkNPTkZJR1VSRT0xXCIsXG4gIFwiUkVHRU5FUkFURV9BUFBTX1RYVD0xXCIsXG4gIFwiSU5TVEFMTF9BUFBfQVJHUz0tLWluc3RhbGwtYXBwIGVycG5leHQgLS1pbnN0YWxsLWFwcCBsZW5kaW5nXCIsXG4gIFwiSU1BR0VfTkFNRT1mcmFwcGUvZXJwbmV4dFwiLFxuICBcIlZFUlNJT049bGF0ZXN0XCIsXG4gIFwiRlJBUFBFX1NJVEVfTkFNRV9IRUFERVI9XCIsXG4gIFwiTUFJTl9ET01BSU49JHttYWluX2RvbWFpbn1cIixcbl1cbm1vdW50cyA9IFtdXG5cbltbY29uZmlnLmRvbWFpbnNdXVxuc2VydmljZU5hbWUgPSBcImZyb250ZW5kXCJcbnBvcnQgPSA4XzA4MFxuaG9zdCA9IFwiJHttYWluX2RvbWFpbn1cIiIKfQ==
The exact Docker Compose and template configuration this template deploys.
Version: latest
Akaunting is a self-hosted, open-source accounting app for small businesses.
Version: latest
EZBookkeeping is a self-hosted bookkeeping application that helps you manage your personal and business finances. It provides features for tracking income, expenses, accounts, and generating financial reports.
Version: latest
BigCapital is a great open source alternative to QuickBooks. A comprehensive accounting and financial management system for businesses.
Version: release
Self-hosted budgeting app with a web UI and a server backed by PostgreSQL.
Version: latest
DumbBudget is a simple, self-hosted budget tracking service with PIN protection and no database required.
Version: 6.6.3
Firefly III is a self-hosted personal finance manager for tracking expenses, budgets, accounts, and financial reports.
Dokploy is a free, open source deployment platform. Deploy Frappe Lending and 499+ other templates on your own infrastructure with a single click.