git subrepo commit (merge) mailcow/src/mailcow-dockerized

subrepo: subdir:   "mailcow/src/mailcow-dockerized"
  merged:   "02ae5285"
upstream: origin:   "https://github.com/mailcow/mailcow-dockerized.git"
  branch:   "master"
  commit:   "649a5c01"
git-subrepo: version:  "0.4.3"
  origin:   "???"
  commit:   "???"
Change-Id: I870ad468fba026cc5abf3c5699ed1e12ff28b32b
diff --git a/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/nesbot/carbon/src/Carbon/Traits/Boundaries.php b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/nesbot/carbon/src/Carbon/Traits/Boundaries.php
new file mode 100644
index 0000000..7fbb1a3
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/inc/lib/vendor/nesbot/carbon/src/Carbon/Traits/Boundaries.php
@@ -0,0 +1,442 @@
+<?php
+
+/**
+ * This file is part of the Carbon package.
+ *
+ * (c) Brian Nesbitt <brian@nesbot.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+namespace Carbon\Traits;
+
+use Carbon\Exceptions\UnknownUnitException;
+
+/**
+ * Trait Boundaries.
+ *
+ * startOf, endOf and derived method for each unit.
+ *
+ * Depends on the following properties:
+ *
+ * @property int $year
+ * @property int $month
+ * @property int $daysInMonth
+ * @property int $quarter
+ *
+ * Depends on the following methods:
+ *
+ * @method $this setTime(int $hour, int $minute, int $second = 0, int $microseconds = 0)
+ * @method $this setDate(int $year, int $month, int $day)
+ * @method $this addMonths(int $value = 1)
+ */
+trait Boundaries
+{
+    /**
+     * Resets the time to 00:00:00 start of day
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->startOfDay();
+     * ```
+     *
+     * @return static
+     */
+    public function startOfDay()
+    {
+        return $this->setTime(0, 0, 0, 0);
+    }
+
+    /**
+     * Resets the time to 23:59:59.999999 end of day
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->endOfDay();
+     * ```
+     *
+     * @return static
+     */
+    public function endOfDay()
+    {
+        return $this->setTime(static::HOURS_PER_DAY - 1, static::MINUTES_PER_HOUR - 1, static::SECONDS_PER_MINUTE - 1, static::MICROSECONDS_PER_SECOND - 1);
+    }
+
+    /**
+     * Resets the date to the first day of the month and the time to 00:00:00
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->startOfMonth();
+     * ```
+     *
+     * @return static
+     */
+    public function startOfMonth()
+    {
+        return $this->setDate($this->year, $this->month, 1)->startOfDay();
+    }
+
+    /**
+     * Resets the date to end of the month and time to 23:59:59.999999
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->endOfMonth();
+     * ```
+     *
+     * @return static
+     */
+    public function endOfMonth()
+    {
+        return $this->setDate($this->year, $this->month, $this->daysInMonth)->endOfDay();
+    }
+
+    /**
+     * Resets the date to the first day of the quarter and the time to 00:00:00
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->startOfQuarter();
+     * ```
+     *
+     * @return static
+     */
+    public function startOfQuarter()
+    {
+        $month = ($this->quarter - 1) * static::MONTHS_PER_QUARTER + 1;
+
+        return $this->setDate($this->year, $month, 1)->startOfDay();
+    }
+
+    /**
+     * Resets the date to end of the quarter and time to 23:59:59.999999
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->endOfQuarter();
+     * ```
+     *
+     * @return static
+     */
+    public function endOfQuarter()
+    {
+        return $this->startOfQuarter()->addMonths(static::MONTHS_PER_QUARTER - 1)->endOfMonth();
+    }
+
+    /**
+     * Resets the date to the first day of the year and the time to 00:00:00
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->startOfYear();
+     * ```
+     *
+     * @return static
+     */
+    public function startOfYear()
+    {
+        return $this->setDate($this->year, 1, 1)->startOfDay();
+    }
+
+    /**
+     * Resets the date to end of the year and time to 23:59:59.999999
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->endOfYear();
+     * ```
+     *
+     * @return static
+     */
+    public function endOfYear()
+    {
+        return $this->setDate($this->year, 12, 31)->endOfDay();
+    }
+
+    /**
+     * Resets the date to the first day of the decade and the time to 00:00:00
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->startOfDecade();
+     * ```
+     *
+     * @return static
+     */
+    public function startOfDecade()
+    {
+        $year = $this->year - $this->year % static::YEARS_PER_DECADE;
+
+        return $this->setDate($year, 1, 1)->startOfDay();
+    }
+
+    /**
+     * Resets the date to end of the decade and time to 23:59:59.999999
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->endOfDecade();
+     * ```
+     *
+     * @return static
+     */
+    public function endOfDecade()
+    {
+        $year = $this->year - $this->year % static::YEARS_PER_DECADE + static::YEARS_PER_DECADE - 1;
+
+        return $this->setDate($year, 12, 31)->endOfDay();
+    }
+
+    /**
+     * Resets the date to the first day of the century and the time to 00:00:00
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->startOfCentury();
+     * ```
+     *
+     * @return static
+     */
+    public function startOfCentury()
+    {
+        $year = $this->year - ($this->year - 1) % static::YEARS_PER_CENTURY;
+
+        return $this->setDate($year, 1, 1)->startOfDay();
+    }
+
+    /**
+     * Resets the date to end of the century and time to 23:59:59.999999
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->endOfCentury();
+     * ```
+     *
+     * @return static
+     */
+    public function endOfCentury()
+    {
+        $year = $this->year - 1 - ($this->year - 1) % static::YEARS_PER_CENTURY + static::YEARS_PER_CENTURY;
+
+        return $this->setDate($year, 12, 31)->endOfDay();
+    }
+
+    /**
+     * Resets the date to the first day of the millennium and the time to 00:00:00
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->startOfMillennium();
+     * ```
+     *
+     * @return static
+     */
+    public function startOfMillennium()
+    {
+        $year = $this->year - ($this->year - 1) % static::YEARS_PER_MILLENNIUM;
+
+        return $this->setDate($year, 1, 1)->startOfDay();
+    }
+
+    /**
+     * Resets the date to end of the millennium and time to 23:59:59.999999
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->endOfMillennium();
+     * ```
+     *
+     * @return static
+     */
+    public function endOfMillennium()
+    {
+        $year = $this->year - 1 - ($this->year - 1) % static::YEARS_PER_MILLENNIUM + static::YEARS_PER_MILLENNIUM;
+
+        return $this->setDate($year, 12, 31)->endOfDay();
+    }
+
+    /**
+     * Resets the date to the first day of week (defined in $weekStartsAt) and the time to 00:00:00
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->startOfWeek() . "\n";
+     * echo Carbon::parse('2018-07-25 12:45:16')->locale('ar')->startOfWeek() . "\n";
+     * echo Carbon::parse('2018-07-25 12:45:16')->startOfWeek(Carbon::SUNDAY) . "\n";
+     * ```
+     *
+     * @param int $weekStartsAt optional start allow you to specify the day of week to use to start the week
+     *
+     * @return static
+     */
+    public function startOfWeek($weekStartsAt = null)
+    {
+        return $this->subDays((7 + $this->dayOfWeek - ($weekStartsAt ?? $this->firstWeekDay)) % 7)->startOfDay();
+    }
+
+    /**
+     * Resets the date to end of week (defined in $weekEndsAt) and time to 23:59:59.999999
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->endOfWeek() . "\n";
+     * echo Carbon::parse('2018-07-25 12:45:16')->locale('ar')->endOfWeek() . "\n";
+     * echo Carbon::parse('2018-07-25 12:45:16')->endOfWeek(Carbon::SATURDAY) . "\n";
+     * ```
+     *
+     * @param int $weekEndsAt optional start allow you to specify the day of week to use to end the week
+     *
+     * @return static
+     */
+    public function endOfWeek($weekEndsAt = null)
+    {
+        return $this->addDays((7 - $this->dayOfWeek + ($weekEndsAt ?? $this->lastWeekDay)) % 7)->endOfDay();
+    }
+
+    /**
+     * Modify to start of current hour, minutes and seconds become 0
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->startOfHour();
+     * ```
+     *
+     * @return static
+     */
+    public function startOfHour()
+    {
+        return $this->setTime($this->hour, 0, 0, 0);
+    }
+
+    /**
+     * Modify to end of current hour, minutes and seconds become 59
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->endOfHour();
+     * ```
+     *
+     * @return static
+     */
+    public function endOfHour()
+    {
+        return $this->setTime($this->hour, static::MINUTES_PER_HOUR - 1, static::SECONDS_PER_MINUTE - 1, static::MICROSECONDS_PER_SECOND - 1);
+    }
+
+    /**
+     * Modify to start of current minute, seconds become 0
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->startOfMinute();
+     * ```
+     *
+     * @return static
+     */
+    public function startOfMinute()
+    {
+        return $this->setTime($this->hour, $this->minute, 0, 0);
+    }
+
+    /**
+     * Modify to end of current minute, seconds become 59
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16')->endOfMinute();
+     * ```
+     *
+     * @return static
+     */
+    public function endOfMinute()
+    {
+        return $this->setTime($this->hour, $this->minute, static::SECONDS_PER_MINUTE - 1, static::MICROSECONDS_PER_SECOND - 1);
+    }
+
+    /**
+     * Modify to start of current second, microseconds become 0
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16.334455')
+     *   ->startOfSecond()
+     *   ->format('H:i:s.u');
+     * ```
+     *
+     * @return static
+     */
+    public function startOfSecond()
+    {
+        return $this->setTime($this->hour, $this->minute, $this->second, 0);
+    }
+
+    /**
+     * Modify to end of current second, microseconds become 999999
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16.334455')
+     *   ->endOfSecond()
+     *   ->format('H:i:s.u');
+     * ```
+     *
+     * @return static
+     */
+    public function endOfSecond()
+    {
+        return $this->setTime($this->hour, $this->minute, $this->second, static::MICROSECONDS_PER_SECOND - 1);
+    }
+
+    /**
+     * Modify to start of current given unit.
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16.334455')
+     *   ->startOf('month')
+     *   ->endOf('week', Carbon::FRIDAY);
+     * ```
+     *
+     * @param string            $unit
+     * @param array<int, mixed> $params
+     *
+     * @return static
+     */
+    public function startOf($unit, ...$params)
+    {
+        $ucfUnit = ucfirst(static::singularUnit($unit));
+        $method = "startOf$ucfUnit";
+        if (!method_exists($this, $method)) {
+            throw new UnknownUnitException($unit);
+        }
+
+        return $this->$method(...$params);
+    }
+
+    /**
+     * Modify to end of current given unit.
+     *
+     * @example
+     * ```
+     * echo Carbon::parse('2018-07-25 12:45:16.334455')
+     *   ->startOf('month')
+     *   ->endOf('week', Carbon::FRIDAY);
+     * ```
+     *
+     * @param string            $unit
+     * @param array<int, mixed> $params
+     *
+     * @return static
+     */
+    public function endOf($unit, ...$params)
+    {
+        $ucfUnit = ucfirst(static::singularUnit($unit));
+        $method = "endOf$ucfUnit";
+        if (!method_exists($this, $method)) {
+            throw new UnknownUnitException($unit);
+        }
+
+        return $this->$method(...$params);
+    }
+}