/*
 Thank you very much for
 http://judge.u-aizu.ac.jp/onlinejudge/review.jsp?rid=496648
 */

#include <iostream>
#include <cstdio>
#include <vector>
#include <list>
#include <algorithm>
#include <cmath>
#include <stack>
#include <map>
#include <numeric>
#include <sstream>
#include <queue>
#include <iomanip>
using namespace std;

#define REP(i,n) for(int (i)=0; (i)<(n); (i)++)
#define FOR(i,a,b) for(int (i)=(a); (i)<(b); (i)++)
#define PUSH(n,v) for(int i=0; i<(n); i++) {int j; cin >> j; v.push_back(j);}
#define ALL(v) v.begin(), v.end()
#define print(s) cout << (s) << endl

typedef pair<int,int> P;

void solve116(int h, int w) {
    vector<vector<int>> bd(h,vector<int>(w));
    REP(i,h) {
        string s;
        cin >> s;
        REP(j,w) {
            if (s[j] == '*') bd[i][j] = 0;
            else i > 0 ? bd[i][j] = bd[i-1][j]+1 : bd[i][j] = 1;
        }
    }
    
    stack<P> st;
    int ans = 0;
    REP(i,h) {
        REP(j,w) {
            int len = 0;
            while (!st.empty() && st.top().first >= bd[i][j]) {
                len += st.top().second;
                ans = max(ans, len * st.top().first);
                st.pop();
            }
            ++len;
            st.push(make_pair(bd[i][j], len));
            ans = max(ans, len * st.top().first);
        }
    }
    cout << ans << endl;
}

int main() {
    int h, w;
    while (cin >> h >> w, h + w) {
        solve116(h,w);
    }
    return 0;
}