<!DOCTYPE html>
<html lang='en'>
<head>
<title>kierkegaard_konfirmation - bynu/content - Unnamed repository; edit this file 'description' to name the repository.</title>
<meta name='generator' content='cgit v1.2.3'/>
<meta name='robots' content='index, nofollow'/>
<link rel='stylesheet' type='text/css' href='/cgit-css/cgit.css'/>
<link rel='stylesheet' type='text/css' href='/cgit-local/local.css'/>
<script type='text/javascript' src='/cgit.js'></script>
<link rel='shortcut icon' href='/favicon.ico'/>
<link rel='alternate' title='Atom feed' href='https://source.couchdesign.dk/bynu/content/atom/kierkegaard_konfirmation?h=master' type='application/atom+xml'/>
<link rel='vcs-git' href='https://source.couchdesign.dk/bynu/content' title='bynu/content Git repository'/>
<link rel='vcs-git' href='user@source.couchdesign.dk:bynu/content' title='bynu/content Git repository'/>
</head>
<body>
<div id='cgit'><table id='header'>
<tr>
<td class='logo' rowspan='2'><a href='/'><img src='/cgit-css/cgit.png' alt='cgit logo'/></a></td>
<td class='main'><a href='/'>index</a> : <a href='/bynu/content/'>bynu/content</a></td><td class='form'><form method='get'>
<input type='hidden' name='id' value='dd0f9ea6aa42bb010f85c6bc3bf4eff1b5a0509b'/><select name='h' onchange='this.form.submit();'>
<option value='master' selected='selected'>master</option>
<option value='wip/zola'>wip/zola</option>
</select> <input type='submit' value='switch'/></form></td></tr>
<tr><td class='sub'>Unnamed repository; edit this file 'description' to name the repository.</td><td class='sub right'>Siri Reiter</td></tr></table>
<table class='tabs'><tr><td>
<a href='/bynu/content/'>summary</a><a href='/bynu/content/refs/?id=dd0f9ea6aa42bb010f85c6bc3bf4eff1b5a0509b'>refs</a><a href='/bynu/content/log/kierkegaard_konfirmation'>log</a><a class='active' href='/bynu/content/tree/kierkegaard_konfirmation?id=dd0f9ea6aa42bb010f85c6bc3bf4eff1b5a0509b'>tree</a><a href='/bynu/content/commit/kierkegaard_konfirmation?id=dd0f9ea6aa42bb010f85c6bc3bf4eff1b5a0509b'>commit</a><a href='/bynu/content/diff/kierkegaard_konfirmation?id=dd0f9ea6aa42bb010f85c6bc3bf4eff1b5a0509b'>diff</a></td><td class='form'><form class='right' method='get' action='/bynu/content/log/kierkegaard_konfirmation'>
<input type='hidden' name='id' value='dd0f9ea6aa42bb010f85c6bc3bf4eff1b5a0509b'/><select name='qt'>
<option value='grep'>log msg</option>
<option value='author'>author</option>
<option value='committer'>committer</option>
<option value='range'>range</option>
</select>
<input class='txt' type='search' size='10' name='q' value=''/>
<input type='submit' value='search'/>
</form>
</td></tr></table>
<div class='path'>path: <a href='/bynu/content/tree/?id=dd0f9ea6aa42bb010f85c6bc3bf4eff1b5a0509b'>root</a>/<a href='/bynu/content/tree/kierkegaard_konfirmation?id=dd0f9ea6aa42bb010f85c6bc3bf4eff1b5a0509b'>kierkegaard_konfirmation</a></div><div class='content'><table summary='tree listing' class='list'>
<tr class='nohover'><th class='left'>Mode</th><th class='left'>Name</th><th class='right'>Size</th><th/></tr>
<tr><td class='ls-mode'>-rw-r--r--</td><td><a class='ls-blob mdwn' href='/bynu/content/tree/kierkegaard_konfirmation/farbar.mdwn?id=dd0f9ea6aa42bb010f85c6bc3bf4eff1b5a0509b'>farbar.mdwn</a></td><td class='ls-size'>299</td><td><<ol class="hl">
<li id="n_1" class="hl"><span class="hl slc">#!/usr/bin/python3</span></li>
<li id="n_2" class="hl"><span class="hl kwa">import&nbsp;</span>gi<span class="hl opt">, </span>signal<span class="hl opt">, </span>logging<span class="hl opt">, </span>sys<span class="hl opt">, </span>os</li>
<li id="n_3" class="hl"></li>
<li id="n_4" class="hl"><span class="hl slc"># import GStreamer and GLib-Helper classes</span></li>
<li id="n_5" class="hl">gi<span class="hl opt">.</span><span class="hl kwd">require_version</span><span class="hl opt">(</span><span class="hl sng">&#39;Gtk&#39;</span><span class="hl opt">, </span><span class="hl sng">&#39;3.0&#39;</span><span class="hl opt">)</span></li>
<li id="n_6" class="hl">gi<span class="hl opt">.</span><span class="hl kwd">require_version</span><span class="hl opt">(</span><span class="hl sng">&#39;Gst&#39;</span><span class="hl opt">, </span><span class="hl sng">&#39;1.0&#39;</span><span class="hl opt">)</span></li>
<li id="n_7" class="hl">gi<span class="hl opt">.</span><span class="hl kwd">require_version</span><span class="hl opt">(</span><span class="hl sng">&#39;GdkX11&#39;</span><span class="hl opt">, </span><span class="hl sng">&#39;3.0&#39;</span><span class="hl opt">)</span></li>
<li id="n_8" class="hl">gi<span class="hl opt">.</span><span class="hl kwd">require_version</span><span class="hl opt">(</span><span class="hl sng">&#39;GstVideo&#39;</span><span class="hl opt">, </span><span class="hl sng">&#39;1.0&#39;</span><span class="hl opt">)</span></li>
<li id="n_9" class="hl"><span class="hl kwa">from </span>gi<span class="hl opt">.</span>repository <span class="hl kwa">import </span>Gtk<span class="hl opt">, </span>Gdk<span class="hl opt">, </span>Gst<span class="hl opt">, </span>GObject<span class="hl opt">, </span>GdkX11<span class="hl opt">, </span>GstVideo</li>
<li id="n_10" class="hl"></li>
<li id="n_11" class="hl"><span class="hl slc"># check min-version</span></li>
<li id="n_12" class="hl">minGst <span class="hl opt">= (</span><span class="hl num">1</span><span class="hl opt">, </span><span class="hl num">5</span><span class="hl opt">)</span></li>
<li id="n_13" class="hl">minPy <span class="hl opt">= (</span><span class="hl num">3</span><span class="hl opt">, </span><span class="hl num">0</span><span class="hl opt">)</span></li>
<li id="n_14" class="hl"></li>
<li id="n_15" class="hl">Gst<span class="hl opt">.</span><span class="hl kwd">init</span><span class="hl opt">([])</span></li>
<li id="n_16" class="hl"><span class="hl kwa">if </span>Gst<span class="hl opt">.</span><span class="hl kwd">version</span><span class="hl opt">() &lt; </span>minGst<span class="hl opt">:</span></li>
<li id="n_17" class="hl">    <span class="hl kwa">raise </span><span class="hl kwc">Exception</span><span class="hl opt">(</span><span class="hl sng">&quot;GStreamer version&quot;</span><span class="hl opt">, </span>Gst<span class="hl opt">.</span><span class="hl kwd">version</span><span class="hl opt">(), </span><span class="hl sng">&#39;is too old, at least&#39;</span><span class="hl opt">, </span>minGst<span class="hl opt">, </span><span class="hl sng">&#39;is required&#39;</span><span class="hl opt">)</span></li>
<li id="n_18" class="hl"></li>
<li id="n_19" class="hl"><span class="hl kwa">if </span>sys<span class="hl opt">.</span>version_info <span class="hl opt">&lt; </span>minPy<span class="hl opt">:</span></li>
<li id="n_20" class="hl">    <span class="hl kwa">raise </span><span class="hl kwc">Exception</span><span class="hl opt">(</span><span class="hl sng">&quot;Python version&quot;</span><span class="hl opt">, </span>sys<span class="hl opt">.</span>version_info<span class="hl opt">, </span><span class="hl sng">&#39;is too old, at least&#39;</span><span class="hl opt">, </span>minPy<span class="hl opt">, </span><span class="hl sng">&#39;is required&#39;</span><span class="hl opt">)</span></li>
<li id="n_21" class="hl"></li>
<li id="n_22" class="hl"></li>
<li id="n_23" class="hl"><span class="hl slc"># init GObject &amp; Co. before importing local classes</span></li>
<li id="n_24" class="hl">GObject<span class="hl opt">.</span><span class="hl kwd">threads_init</span><span class="hl opt">()</span></li>
<li id="n_25" class="hl">Gdk<span class="hl opt">.</span><span class="hl kwd">init</span><span class="hl opt">([])</span></li>
<li id="n_26" class="hl">Gtk<span class="hl opt">.</span><span class="hl kwd">init</span><span class="hl opt">([])</span></li>
<li id="n_27" class="hl"></li>
<li id="n_28" class="hl"><span class="hl slc"># import local classes</span></li>
<li id="n_29" class="hl"><span class="hl kwa">from </span>lib<span class="hl opt">.</span>args <span class="hl kwa">import </span>Args</li>
<li id="n_30" class="hl"><span class="hl kwa">from </span>lib<span class="hl opt">.</span>config <span class="hl kwa">import </span>Config</li>
<li id="n_31" class="hl"><span class="hl kwa">from </span>lib<span class="hl opt">.</span>ui <span class="hl kwa">import </span>Ui</li>
<li id="n_32" class="hl"><span class="hl kwa">from </span>lib<span class="hl opt">.</span>loghandler <span class="hl kwa">import </span>LogHandler</li>
<li id="n_33" class="hl"></li>
<li id="n_34" class="hl"><span class="hl kwa">import </span>lib<span class="hl opt">.</span>connection <span class="hl kwa">as </span>Connection</li>
<li id="n_35" class="hl"></li>
<li id="n_36" class="hl"><span class="hl slc"># main class</span></li>
<li id="n_37" class="hl"><span class="hl kwa">class </span><span class="hl kwd">Voctogui</span><span class="hl opt">(</span><span class="hl kwb">object</span><span class="hl opt">):</span></li>
<li id="n_38" class="hl">    <span class="hl kwa">def </span><span class="hl kwd">__init__</span><span class="hl opt">(</span>self<span class="hl opt">):</span></li>
<li id="n_39" class="hl">        self<span class="hl opt">.</span>log <span class="hl opt">= </span>logging<span class="hl opt">.</span><span class="hl kwd">getLogger</span><span class="hl opt">(</span><span class="hl sng">&#39;Voctogui&#39;</span><span class="hl opt">)</span></li>
<li id="n_40" class="hl"></li>
<li id="n_41" class="hl">        <span class="hl slc"># Uf a UI-File was specified on the Command-Line, load it</span></li>
<li id="n_42" class="hl">        <span class="hl kwa">if </span>Args<span class="hl opt">.</span>ui_file<span class="hl opt">:</span></li>
<li id="n_43" class="hl">            self<span class="hl opt">.</span>log<span class="hl opt">.</span><span class="hl kwd">info</span><span class="hl opt">(</span><span class="hl sng">&#39;loading ui-file from file specified on command-line: </span><span class="hl ipl">%s</span><span class="hl sng">&#39;</span><span class="hl opt">, </span>self<span class="hl opt">.</span>options<span class="hl opt">.</span>ui_file<span class="hl opt">)</span></li>
<li id="n_44" class="hl">            self<span class="hl opt">.</span>ui <span class="hl opt">= </span><span class="hl kwd">Ui</span><span class="hl opt">(</span>Args<span class="hl opt">.</span>ui_file<span class="hl opt">)</span></li>
<li id="n_45" class="hl"></li>
<li id="n_46" class="hl">        <span class="hl kwa">else</span><span class="hl opt">:</span></li>
<li id="n_47" class="hl">            <span class="hl slc"># Paths to look for the gst-switch UI-File</span></li>
<li id="n_48" class="hl">            paths <span class="hl opt">= [</span></li>
<li id="n_49" class="hl">                os<span class="hl opt">.</span>path<span class="hl opt">.</span><span class="hl kwd">join</span><span class="hl opt">(</span>os<span class="hl opt">.</span>path<span class="hl opt">.</span><span class="hl kwd">dirname</span><span class="hl opt">(</span>os<span class="hl opt">.</span>path<span class="hl opt">.</span><span class="hl kwd">realpath</span><span class="hl opt">(</span>__file__<span class="hl opt">)), </span><span class="hl sng">&#39;ui/voctogui.ui&#39;</span><span class="hl opt">),</span></li>
<li id="n_50" class="hl">                <span class="hl sng">&#39;/usr/lib/voctogui/ui/voctogui.ui&#39;</span></li>
<li id="n_51" class="hl">            <span class="hl opt">]</span></li>
<li id="n_52" class="hl"></li>
<li id="n_53" class="hl">            <span class="hl slc"># Look for a gst-switch UI-File and load it</span></li>
<li id="n_54" class="hl">            <span class="hl kwa">for </span>path <span class="hl kwa">in </span>paths<span class="hl opt">:</span></li>
<li id="n_55" class="hl">                self<span class="hl opt">.</span>log<span class="hl opt">.</span><span class="hl kwd">debug</span><span class="hl opt">(</span><span class="hl sng">&#39;trying to load ui-file from file </span><span class="hl ipl">%s</span><span class="hl sng">&#39;</span><span class="hl opt">, </span>path<span class="hl opt">)</span></li>
<li id="n_56" class="hl"></li>
<li id="n_57" class="hl">                <span class="hl kwa">if </span>os<span class="hl opt">.</span>path<span class="hl opt">.</span><span class="hl kwd">isfile</span><span class="hl opt">(</span>path<span class="hl opt">):</span></li>
<li id="n_58" class="hl">                    self<span class="hl opt">.</span>log<span class="hl opt">.</span><span class="hl kwd">info</span><span class="hl opt">(</span><span class="hl sng">&#39;loading ui-file from file </span><span class="hl ipl">%s</span><span class="hl sng">&#39;</span><span class="hl opt">, </span>path<span class="hl opt">)</span></li>
<li id="n_59" class="hl">                    self<span class="hl opt">.</span>ui <span class="hl opt">= </span><span class="hl kwd">Ui</span><span class="hl opt">(</span>path<span class="hl opt">)</span></li>
<li id="n_60" class="hl">                    <span class="hl kwa">break</span></li>
<li id="n_61" class="hl"></li>
<li id="n_62" class="hl">        <span class="hl kwa">if </span>self<span class="hl opt">.</span>ui <span class="hl kwa">is None</span><span class="hl opt">:</span></li>
<li id="n_63" class="hl">            <span class="hl kwa">raise </span><span class="hl kwc">Exception</span><span class="hl opt">(</span><span class="hl sng">&quot;Can&#39;t find any .ui-Files to use (searched </span><span class="hl ipl">%s</span><span class="hl sng">)&quot;</span> <span class="hl opt">% (</span><span class="hl sng">&#39;, &#39;</span><span class="hl opt">.</span><span class="hl kwd">join</span><span class="hl opt">(</span>paths<span class="hl opt">)))</span></li>
<li id="n_64" class="hl"></li>
<li id="n_65" class="hl">        self<span class="hl opt">.</span>ui<span class="hl opt">.</span><span class="hl kwd">setup</span><span class="hl opt">()</span></li>
<li id="n_66" class="hl"></li>
<li id="n_67" class="hl"></li>
<li id="n_68" class="hl">    <span class="hl kwa">def </span><span class="hl kwd">run</span><span class="hl opt">(</span>self<span class="hl opt">):</span></li>
<li id="n_69" class="hl">        self<span class="hl opt">.</span>log<span class="hl opt">.</span><span class="hl kwd">info</span><span class="hl opt">(</span><span class="hl sng">&#39;setting UI visible&#39;</span><span class="hl opt">)</span></li>
<li id="n_70" class="hl">        self<span class="hl opt">.</span>ui<span class="hl opt">.</span><span class="hl kwd">show</span><span class="hl opt">()</span></li>
<li id="n_71" class="hl"></li>
<li id="n_72" class="hl">        <span class="hl kwa">try</span><span class="hl opt">:</span></li>
<li id="n_73" class="hl">            self<span class="hl opt">.</span>log<span class="hl opt">.</span><span class="hl kwd">info</span><span class="hl opt">(</span><span class="hl sng">&#39;running Gtk-MainLoop&#39;</span><span class="hl opt">)</span></li>
<li id="n_74" class="hl">            Gtk<span class="hl opt">.</span><span class="hl kwd">main</span><span class="hl opt">()</span></li>
<li id="n_75" class="hl">            self<span class="hl opt">.</span>log<span class="hl opt">.</span><span class="hl kwd">info</span><span class="hl opt">(</span><span class="hl sng">&#39;Gtk-MainLoop ended&#39;</span><span class="hl opt">)</span></li>
<li id="n_76" class="hl">        <span class="hl kwa">except </span><span class="hl kwc">KeyboardInterrupt</span><span class="hl opt">:</span></li>
<li id="n_77" class="hl">            self<span class="hl opt">.</span>log<span class="hl opt">.</span><span class="hl kwd">info</span><span class="hl opt">(</span><span class="hl sng">&#39;Terminated via Ctrl-C&#39;</span><span class="hl opt">)</span></li>
<li id="n_78" class="hl"></li>
<li id="n_79" class="hl">    <span class="hl kwa">def </span><span class="hl kwd">quit</span><span class="hl opt">(</span>self<span class="hl opt">):</span></li>
<li id="n_80" class="hl">        self<span class="hl opt">.</span>log<span class="hl opt">.</span><span class="hl kwd">info</span><span class="hl opt">(</span><span class="hl sng">&#39;quitting Gtk-MainLoop&#39;</span><span class="hl opt">)</span></li>
<li id="n_81" class="hl">        Gtk<span class="hl opt">.</span><span class="hl kwd">main_quit</span><span class="hl opt">()</span></li>
<li id="n_82" class="hl"></li>
<li id="n_83" class="hl"></li>
<li id="n_84" class="hl"><span class="hl slc"># run mainclass</span></li>
<li id="n_85" class="hl"><span class="hl kwa">def </span><span class="hl kwd">main</span><span class="hl opt">():</span></li>
<li id="n_86" class="hl">    <span class="hl slc"># configure logging</span></li>
<li id="n_87" class="hl">    docolor <span class="hl opt">= (</span>Args<span class="hl opt">.</span>color <span class="hl opt">== </span><span class="hl sng">&#39;always&#39;</span><span class="hl opt">) </span><span class="hl kwa">or </span><span class="hl opt">(</span>Args<span class="hl opt">.</span>color <span class="hl opt">== </span><span class="hl sng">&#39;auto&#39;</span> <span class="hl kwa">and </span>sys<span class="hl opt">.</span>stderr<span class="hl opt">.</span><span class="hl kwd">isatty</span><span class="hl opt">())</span></li>
<li id="n_88" class="hl"></li>
<li id="n_89" class="hl">    handler <span class="hl opt">= </span><span class="hl kwd">LogHandler</span><span class="hl opt">(</span>docolor<span class="hl opt">)</span></li>
<li id="n_90" class="hl">    logging<span class="hl opt">.</span>root<span class="hl opt">.</span><span class="hl kwd">addHandler</span><span class="hl opt">(</span>handler<span class="hl opt">)</span></li>
<li id="n_91" class="hl"></li>
<li id="n_92" class="hl">    <span class="hl kwa">if </span>Args<span class="hl opt">.</span>verbose <span class="hl opt">&gt;= </span><span class="hl num">2</span><span class="hl opt">:</span></li>
<li id="n_93" class="hl">        level <span class="hl opt">= </span>logging<span class="hl opt">.</span>DEBUG</li>
<li id="n_94" class="hl">    <span class="hl kwa">elif </span>Args<span class="hl opt">.</span>verbose <span class="hl opt">== </span><span class="hl num">1</span><span class="hl opt">:</span></li>
<li id="n_95" class="hl">        level <span class="hl opt">= </span>logging<span class="hl opt">.</span>INFO</li>
<li id="n_96" class="hl">    <span class="hl kwa">else</span><span class="hl opt">:</span></li>
<li id="n_97" class="hl">        level <span class="hl opt">= </span>logging<span class="hl opt">.</span>WARNING</li>
<li id="n_98" class="hl"></li>
<li id="n_99" class="hl">    logging<span class="hl opt">.</span>root<span class="hl opt">.</span><span class="hl kwd">setLevel</span><span class="hl opt">(</span>level<span class="hl opt">)</span></li>
<li id="n_100" class="hl"></li>
<li id="n_101" class="hl">    <span class="hl slc"># make killable by ctrl-c</span></li>
<li id="n_102" class="hl">    logging<span class="hl opt">.</span><span class="hl kwd">debug</span><span class="hl opt">(</span><span class="hl sng">&#39;setting SIGINT handler&#39;</span><span class="hl opt">)</span></li>
<li id="n_103" class="hl">    signal<span class="hl opt">.</span><span class="hl kwd">signal</span><span class="hl opt">(</span>signal<span class="hl opt">.</span>SIGINT<span class="hl opt">, </span>signal<span class="hl opt">.</span>SIG_DFL<span class="hl opt">)</span></li>
<li id="n_104" class="hl"></li>
<li id="n_105" class="hl">    logging<span class="hl opt">.</span><span class="hl kwd">info</span><span class="hl opt">(</span><span class="hl sng">&#39;Python Version: </span><span class="hl ipl">%s</span><span class="hl sng">&#39;</span><span class="hl opt">, </span>sys<span class="hl opt">.</span>version_info<span class="hl opt">)</span></li>
<li id="n_106" class="hl">    logging<span class="hl opt">.</span><span class="hl kwd">info</span><span class="hl opt">(</span><span class="hl sng">&#39;GStreamer Version: </span><span class="hl ipl">%s</span><span class="hl sng">&#39;</span><span class="hl opt">, </span>Gst<span class="hl opt">.</span><span class="hl kwd">version</span><span class="hl opt">())</span></li>
<li id="n_107" class="hl"></li>
<li id="n_108" class="hl">    <span class="hl slc"># establish a synchronus connection to server</span></li>
<li id="n_109" class="hl">    Connection<span class="hl opt">.</span><span class="hl kwd">establish</span><span class="hl opt">(</span></li>
<li id="n_110" class="hl">        Config<span class="hl opt">.</span><span class="hl kwd">get</span><span class="hl opt">(</span><span class="hl sng">&#39;server&#39;</span><span class="hl opt">, </span><span class="hl sng">&#39;host&#39;</span><span class="hl opt">))</span></li>
<li id="n_111" class="hl"></li>
<li id="n_112" class="hl">    <span class="hl slc"># fetch config from server</span></li>
<li id="n_113" class="hl">    Config<span class="hl opt">.</span><span class="hl kwd">fetchServerConfig</span><span class="hl opt">()</span></li>
<li id="n_114" class="hl"></li>
<li id="n_115" class="hl">    <span class="hl slc"># switch connection to nonblocking, event-driven mode</span></li>
<li id="n_116" class="hl">    Connection<span class="hl opt">.</span><span class="hl kwd">enterNonblockingMode</span><span class="hl opt">()</span></li>
<li id="n_117" class="hl"></li>
<li id="n_118" class="hl">    <span class="hl slc"># init main-class and main-loop</span></li>
<li id="n_119" class="hl">    <span class="hl slc"># (this binds all event-hander on the Connection)</span></li>
<li id="n_120" class="hl">    logging<span class="hl opt">.</span><span class="hl kwd">debug</span><span class="hl opt">(</span><span class="hl sng">&#39;initializing Voctogui&#39;</span><span class="hl opt">)</span></li>
<li id="n_121" class="hl">    voctogui <span class="hl opt">= </span><span class="hl kwd">Voctogui</span><span class="hl opt">()</span></li>
<li id="n_122" class="hl"></li>
<li id="n_123" class="hl">    <span class="hl slc"># start the Mainloop and show the Window</span></li>
<li id="n_124" class="hl">    logging<span class="hl opt">.</span><span class="hl kwd">debug</span><span class="hl opt">(</span><span class="hl sng">&#39;running Voctogui&#39;</span><span class="hl opt">)</span></li>
<li id="n_125" class="hl">    voctogui<span class="hl opt">.</span><span class="hl kwd">run</span><span class="hl opt">()</span></li>
<li id="n_126" class="hl"></li>
<li id="n_127" class="hl"><span class="hl kwa">if </span>__name__ <span class="hl opt">== </span><span class="hl sng">&#39;__main__&#39;</span><span class="hl opt">:</span></li>
<li id="n_128" class="hl">    <span class="hl kwd">main</span><span class="hl opt">()</span></li>
</ol></code></pre></td></tr></table>
</div> <!-- class=content -->
<div class='footer'>generated by <a href='https://git.zx2c4.com/cgit/about/'>cgit v1.2.3</a> (<a href='https://git-scm.com/'>git 2.46.0</a>) at 2025-09-09 05:58:26 +0000</div>
</div> <!-- id=cgit -->
</body>
</html>
